c# ?和?? 用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# ?和?? 用法相关的知识,希望对你有一定的参考价值。

本文不讨论:条件(三元)运算符 (?:)

本文假定你熟悉值类型、引用类型、可空化、泛型等基本概念

 

概念

?:可空类修饰符,是System.Nullable<T>的简写,下面两条语句等效。

  private System.Nullable<System.DateTime> _SubmitDate;

  private DateTime? _SubmitDate;

 

?:空合并运算符,用于定义可空类的默认值,下面语句当_SubmitDate的值不为NULL时就取_SubmitDate 值,为NULL就取MinValue值。

  _SubmitDate = _SubmitDate ?? System.DateTime.MinValue;

 

场景

?:欲让一个值类型可为null时用。

  当你用LINQ TO SQL处理数据时,DB表中的SubmitDate datetime NULL,但datetime属于值类型,故项目对应的实体类中SubmitDate属性就得用到"?"

  private System.Nullable<DateTime> _SubmitDate ;

  或 private DateTime? _SubmitDate;

 

?:欲给可空类型赋默认值,可用"??"空合并运算符

  private DateTime? _SubmitDate;

  _SubmitDate =_SubmitDate?? System.DateTime.MinValue;

 

用法

引用类型默认可null,故不需要用"?"来实现可空化,值类型才需要可空化,最常用的四种值类型是:

1.DateTime

   private DateTime? _SubmitDate;

  _SubmitDate = _SubmitDate ?? System.DateTime.MinValue;

2.Guid

  private Guid? _SID;

  _SID = _SID ?? System.Guid.NewGuid();

3.bool

  private bool? _IsVip;

  _IsVip = _IsVip ?? false;

4.int

  private int?, _Age;

  _Age = _Age?? 0;

 

引用类型和可空化后的值类型都可以通过"??"来设置默认值。

以上是关于c# ?和?? 用法的主要内容,如果未能解决你的问题,请参考以下文章

C#的Timer的详细用法?

C#中HashTable用法和Dictionary比较

c#中SqlParameter用法

C# Graphics的用法?

c#中object的用法

C#中Split()的用法