代码改变世界

C#中的两个问号

2012-07-23 13:57  田志良  阅读(485)  评论(0编辑  收藏  举报

C#中两个问号的作用是判断??左边的对象是否为null,如果不为null则使用??左边的对象,如果为null则使用??右边的对象。
比如:a = b ?? c,如果b为null,则a = c,如果b不为null,则a = b。

// 原先要这样处理参数:
string tmd = String.Empty;
if (Request["Select"] != null)
{
    tmd = Request["Select"];
}
else
{
    tmd = "All";
}

// 现在重构为:
string tmd1 = Request["Select"] ?? "All";

Session什么的也可以这么处理。顺便提一句,实际项目中处理参数比这个要复杂。往往包括类型转换等操作。类型转换建议用as操作符,强转不好。

 

补充一下:

不可以把null赋值给int型变量,但可以通过以下方法赋值:

 int? i = null;