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;

 

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

posted on 2016-06-10 18:11  alanVan  阅读(180)  评论(0编辑  收藏  举报

导航