为什么会这样?出现在IEnumerable <int>?。ToList()?

时间:2016-12-30 16:24:11

标签: c# .net c#-6.0

我正在审核一些代码,但我遇到了以下代码:

List authorIntList = authorIds?.ToList();

在上面的示例中,authorIds是一个IEnumerable。上面代码行中?的目的是什么?我不确定我以前见过这种模式。它做了什么以及在哪个版本的.NET中实现了它?

4 个答案:

答案 0 :(得分:10)

这称为the "null conditional operator" - 即?. - C#6.0的新手。这意味着,如果authorIds null,则会在其上调用/返回ToList()。否则,它将返回null。它基本上是语法糖,因此您不必编写更长的代码,如List AuthorIntList = authorIds != null ? authorIds.ToList() : null;

答案 1 :(得分:0)

&#34; Null条件运算符&#34;作为速记的方式存在&#34;如果这不是null,则执行该操作,否则返回null&#34;。它与

基本相同
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。