当前位置: 首页 > news >正文

山西网站开发二次开发天津seo推广软件

山西网站开发二次开发,天津seo推广软件,东莞网站建设设,请别人做网站大概要多少钱前言: 问:为什么会有可空值类型的诞生? 答:应对在某些特定场景中获取的信息可能是不完整的。 C# 1中的可空值类型 在C#1中没有对应的表示Null值的方法。当时普遍都是采用其他方式。第一种在数据缺失的情况下给其一个默认值。第…

前言:

问:为什么会有可空值类型的诞生?

答:应对在某些特定场景中获取的信息可能是不完整的。

C# 1中的可空值类型

        在C#1中没有对应的表示Null值的方法。当时普遍都是采用其他方式。第一种在数据缺失的情况下给其一个默认值。第二种是采用一个标识符来表示当前的数据是否有值。无论是哪种方式都会对我们的维护和多余的逻辑重复。

C# 2中的可空值类型

 可空值类型定义如下所示:

 在早期结构体的定义就是通过Nullable<T>T为我们需要传递的类型实参。T在结构体当中我门称呼为基础类型。如当前Nullable<int>结构体的基础类型是int。

举个例子:

Nullable<double> myNullable = new Nullable<double>();

提示:1 结构体会隐藏一个默认公共无参的构造器(结构体的共性) 2 结构体中的类型形参只支持值类型。(约束为 Struct的原因)如(int、double、decimal、long、float)

访问可空值类型 

  static void Main(){System.Nullable<int> myStruct = new System.Nullable<int>();//myStruct = 10;//HasValue: 指可空值类型中是否具有实际有效的值 if (myStruct.HasValue){// Value:指可空值类型结构中实际的值System.Console.WriteLine(myStruct.Value);}else{throw new System.Exception();}System.Console.ReadLine();}

 可空值类型提供的方法

无参的方法GetValueOrDefault
 static void Main(){System.Nullable<decimal> myStruct = new System.Nullable<decimal>();myStruct = 10;//输出10 System.Console.WriteLine(myStruct.GetValueOrDefault());System.Nullable<decimal> myStruct2 = new System.Nullable<decimal>();//输出基础类型的默认值//输出0 与 typeof(decimal)效果一致System.Console.WriteLine(myStruct2.GetValueOrDefault());System.Console.ReadLine();}

示例解释:

        当前的方法效果是当属性HasValue为true的时候是代表当前结构体是有实际值的情况下那么返回的就是当前结构体实际值,如果为false那么则返回当前实际结构体的基础类型的默认值 。

有参的方法GetValueOrDefault
   System.Console.WriteLine(myStruct.GetValueOrDefault(45));

示例解释:
        与上面一个无参的重载函数区别在于,当结构体并没有实际值的情况下那么返回的就是当前您传入的值。当结构体具有实际值的情况下那么返回的则是实际值。 

重写的Equals方法
   public override bool Equals(object other){if (!hasValue){return other == null;}if (other == null){return false;}return value.Equals(other);}

示例解释:当结构体与被比较的object类型的数据都不为null的情况下再进行比较 

可空值类型与基础类型的转换 

System.Nullable<int> myStruct = new System.Nullable<int>();
//可以隐式执行基础类型与 Nullable<int> 的转化
int ints = 0;
myStruct = ints;
//显示转换 则相反
int intss = (int)myStruct;

注意:在显示转换中如果可空值类型结构体没有值,则是默认值的情况下会抛出异常,因为当前的默认值将会是Null,null是无法赋值给非空的值类型的。

装箱行为

        装箱行为在可空类型与非可空类型是不同的,其中非可空类型被装箱时返回的结果类型就是原始的装箱类型,而可空类型发返回类型需要由 HasValue属性来决定,当HasValue为False时那么当前的非可空类型的引用则是Null 引用,为True时才是装箱时对应的数据类型的引用。

举个例子:

int X = default;
object o = X;
Console.WriteLine(typeof(int) == o.GetType());
Console.ReadLine();

示例解释:当前是非可空类型int 装箱到 object 类型中,返回的结果类型就是原始的装箱类型

//没有实际值
Nullable<int> @int = default;
object obj = @int;
Console.WriteLine(obj == null);//具有实际值
Nullable<int> @int2 = 1;
object obj2 = @int2;
Console.WriteLine(obj2 == null);Console.ReadLine();

示例解释:将可空类型装箱,运行将会报错 

 简化可空值类型特性

        C# 提供了 Nullable<T> 结构,允许值类型具有 null 值。通过使用 ? 后缀,可以创建可空版本的值类型。例如,int? 是一个可空的 int 类型。(按照编码习惯使用,或者按照项目编码习惯,二者编译的效果相同 产生IL的代码是一致的)

http://www.tj-hxxt.cn/news/11346.html

相关文章:

  • 武汉 酒店 网站制作百度答主招募入口官网
  • 高端网站建设公司哪家服务态度好seo 工具
  • 授权登录网站怎么做泉州百度网络推广
  • 动漫做视频在线观看网站网店运营的工作内容
  • 网站建设的目标与期望高端营销型网站制作
  • iis的网站默认端口站长工具查询seo
  • 专业刷单网站建设抖音seo优化公司
  • 河南做网站汉狮网络十大品牌营销策划公司
  • wordpress 4.6关键词首页排名优化
  • 做旅游网站毕设任务书百度一下百度网页版
  • 江苏建设信息网站有时候打不开怎么创建一个网页
  • 做公众号好还是网站好推广运营怎么做
  • 中国苹果手机官方网站序列号查询2345网址大全设主页
  • 香港服务器做网站抖音seo怎么做的
  • 网站建设企业合作邀请函网络营销策划的流程
  • 创建网站的目的是什么意思seo兼职怎么收费
  • 网站图怎么做会高清云建站模板
  • 做网站需要哪些成本seo优化网络公司排名
  • 搭建网站是什么百度竞价广告点击器
  • 东莞网站建设设计价格百度app 浏览器
  • 网站建设云尚网络百度一下百度搜索百度一下
  • 浙江杰立建设集团 网站首页百度竞价课程
  • 网站字体设计规范软文推广文章范文1000
  • 培 网站建设方案 doc夸克搜索网页版
  • 厦门移动网站建设哪家专业网站收录网
  • 河南网站建设网络公司今日热搜榜排名
  • 南昌网站建设公司服务器宁波网站制作优化服务
  • wordpress网站加载效果企业seo顾问公司
  • html css仿wordpress大连做优化网站哪家好
  • 网站建设利润百度排名规则