什么是'??' 在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

上一篇: What does '??' mean in C#?

下一篇: What does ?? operator means in C#?