什么是'??' 在C#中是什么意思?
可能重复:
C#中两个问号在一起意味着什么?
我试图理解这个陈述的作用:什么是“??” 意思? 如果if-statment是这个som类型吗?
string cookieKey = "SearchDisplayType" + key ?? "";
这是Null合并操作符。 这意味着如果第一部分有值,则返回该值,否则返回第二部分。
例如:
object foo = null;
object rar = "Hello";
object something = foo ?? rar;
something == "Hello"; // true
或者一些实际的代码:
IEnumerable<Customer> customers = GetCustomers();
IList<Customer> customerList = customers as IList<Customer> ??
customers.ToList();
这个例子所做的是将客户作为IList<Customer>
投放。 如果此转换结果为空,它将调用客户IEnumerable上的LINQ ToList
方法。
可比的if语句是这样的:
IEnumerable<Customer> customers = GetCustomers();
IList<Customer> customersList = customers as IList<Customer>;
if (customersList == null)
{
customersList = customers.ToList();
}
与使用空合并运算符在单行内执行相比,这是很多代码。
就是这样。 那么,不是真的。
其实就是这样。 而这个,这个,这个和这个,仅举几例。 我用全能的Google找到它们,因为SO没有找到答案的功能(正确?),因此很难找到与这类问题重复的东西。 那么,为了将来,请将此作为参考。 ;-)
它被称为空合并运算符。 它基本上和。一样
int? nullableDemoInteger;
// ...
int someValue = nullableDemoInteger ?? -1;
// basically same as
int someValue = nullableDemoInteger.HasValue ? nullableDemoInteger.Value : -1;
// basically same as
int someValue;
if(nullableDemoInteger.HasValue)
someValue = nullableDemoInteger.Value;
else
someValue = -1;
它是空合并运算符。 在这种情况下,它大致相当于:
string cookieKey;
string temp = "SearchDisplayType" + key;
if (temp == null)
cookieKey = "";
else
cookieKey = temp;
而且,由于"SearchDisplayType" + key
永远不能为null
,这完全等价于:
string cookieKey = "SearchDisplayType" + key;
链接地址: http://www.djcxy.com/p/53831.html