我正在审核一些代码,但我遇到了以下代码:
List authorIntList = authorIds?.ToList();
在上面的示例中,authorIds是一个IEnumerable。上面代码行中?
的目的是什么?我不确定我以前见过这种模式。它做了什么以及在哪个版本的.NET中实现了它?
答案 0 :(得分:10)
这称为the "null conditional operator" - 即?
和.
- C#6.0的新手。这意味着,如果authorIds
不 null
,则会在其上调用/返回ToList()
。否则,它将返回null。它基本上是语法糖,因此您不必编写更长的代码,如List AuthorIntList = authorIds != null ? authorIds.ToList() : null;
。
答案 1 :(得分:0)
" Null条件运算符"作为速记的方式存在"如果这不是null,则执行该操作,否则返回null"。它与
基本相同List authorIntList = authorIds ? authorIDs.ToList() : null; //null coalescing
或
List authorIntList = null;
if(authorIDs != null) { authorIntList = authorIDs.ToList(); } //traditional if
答案 2 :(得分:0)
它是一个空条件运算符,在许多语言中人们称之为Elvis运算符。它已从c#6.0添加并检查您的代码为null。
所以如果你有类似的东西:
var x= a?.b?.c?.d;
如果a,b,c或d中的任何一个为空,则将为null。如果所有这些都不为空,它将是d中的值。在你必须把它们放入条件之前。
if(a!= null && a.b!= null && a.b.c!= null)
{
x= a?.b?.c?.d;
}
答案 3 :(得分:-1)
Correction Null条件运算符 https://msdn.microsoft.com/en-us/library/dn986595.aspx
就像是说authorId不是null然后执行ToList()else返回null。