分享

private DateTime?

 空城66 2014-12-31
 private DateTime? _lastlogin;
private   DateTime?   _lastlogin;

发现有人这么写,   这个 "? "是什么意思?   第一次见到

[解决办法]
C# 2.0中的可空类型以及?和?? 

最近在学习C# 2.0,在.NET Framework 2.0中新增加了System.Nullable泛型结构,它具有处理值类型数据具和处理null的功能。例如:
System.Nullable<int> i = 2;
i = null;
System.Nullable<bool> b = null;
另外C#中还提供了上述表示方法的简写形式:
int? i = null;
bool? b = null;
此时,i除了可以正常处理int值外还可以被赋值为null;b则可以处理true、false和null值。感觉上好像“值类型可以处理null”似的,实际上,上面的System.Nullable<int>是对int的一种扩展,前者可被称为“可空的int”,后者被称为“非空的int”,它们所指的并非同一事物。因此,当把一个可空类型值赋给一个非空类型时,将引发编译错误,例如:
int? ni = null;
int i = ni; //这一句将引发编译错误
推荐的方法是赋值前对可空类型的值进行检查,在C#中使用??运算符分配默认值,如:
int? ni = null;
int i = ni ?? 0;
运算符会首先判断左操作数是否为空,如果为空则返回??后面给出的默认值,否则返回左操作数,其意义类似于:
int? ni = null;
int i = ni.HasValue ? ni.Value : 0;

提醒:System.Nullable<int>并不等同于int,值类型还是值类型,int类型不能处理null,System.Nullable<int>是一种新的结构类型,被用来处理int类型数据和null。
[解决办法]
nullable 类型变量
因为值类型不能为null,所以有时判断值类型是否初始化,比较困难,所以2.0 推出
nullable

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多