我试图了解这个声明的作用:“??”意思? 如果是if-statment,这是som类型吗?
string cookieKey = "SearchDisplayType" + key ?? "";
答案 0 :(得分:14)
这是Null Coalescing运营商。这意味着如果第一部分具有值,则返回该值,否则返回第二部分。
E.g:
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>
进行投射。如果此强制转换结果为null,则它将调用客户IEnumerable上的LINQ ToList
方法。
可比较的if语句是:
IEnumerable<Customer> customers = GetCustomers();
IList<Customer> customersList = customers as IList<Customer>;
if (customersList == null)
{
customersList = customers.ToList();
}
与使用null合并运算符在一行内完成相比,这是很多代码。
答案 1 :(得分:5)
这是this。好吧,不是真的。
实际上,它是this。 this,this,this和this等等。我用全能的谷歌找到它们,因为SO没有搜索答案的功能(正确吗?),因此很难找到这类问题的副本。那么,对于未来,请将此作为参考。 ; - )
它被称为null-coalescing运算符。它与
基本相同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;
答案 2 :(得分:4)
这是null-coalescing operator。在这种情况下,它大致相当于:
string cookieKey;
string temp = "SearchDisplayType" + key;
if (temp == null)
cookieKey = "";
else
cookieKey = temp;
而且,由于"SearchDisplayType" + key
永远不会是null
,所以这完全等同于:
string cookieKey = "SearchDisplayType" + key;
答案 3 :(得分:2)
它被称为null-coalescing运算符。 请参阅:http://msdn.microsoft.com/en-us/library/ms173224.aspx
答案 4 :(得分:1)
这是Null Coalescing operator,它检查值是否为null,如果是??
则返回值。
答案 5 :(得分:1)
它是null-coalescing运算符。
这意味着如果key
不为null,则使用key的值,如果key为null,则使用值""
。
答案 6 :(得分:1)
??是null-coalescing。
来自MSDN:
??运营商被称为 使用null-coalescing运算符 为a定义默认值 可空值的类型以及 参考类型。它返回 左手操作数,如果它不为空; 否则它返回权利 操作数。
但请注意,在您的情况下,表达式的左侧部分不能为null,因为它是字符串常量与变量的串联。如果key为null,则“SearchDisplayType”+ key将评估为“SearchDisplayType”。
我猜你的陈述的意图可以通过以下方式实现:
string cookieKey = key==null ? "" : "SearchDisplayType"+key;
使用此代码,如果key为null,则cookieKey设置为空字符串,否则设置为“SearchDisplayType”+ key
的串联