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

use*_*966 4 .net c# c#-6.0

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

List authorIntList = authorIds?.ToList();
Run Code Online (Sandbox Code Playgroud)

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

ror*_*.ap 10

这就是所谓的"零条件运算符" -即?.一起-新的C#6.0.它的意思是,如果authorIds没有 null,那么它会调用/返回ToList()就可以了.否则,它将返回null.它基本上是语法糖,因此您不必编写更长的代码List AuthorIntList = authorIds != null ? authorIds.ToList() : null;.