Я только что обновился с VS 2010 до 2015 года. Мне нравится новый оператор с нулевым условием, который также известен как нулевое распространение, Это позволяет упростить код, например:
string firstCustomerName = customers?[0].Name; // null if customers or the first customer is null
другой:
int? count = customers?[0]?.Orders?.Count(); // null if customers, the first customer, or Orders is null
который возвращает Nullable<int>
, даже если Enumerable.Count
возвращает int
, чтобы разделить действительный счетчик и любой nulls
раньше. Это довольно интуитивно и очень полезно.
Но зачем это компилируется и работает как ожидалось (он возвращает false
):
string text = null;
bool contains = text?.IndexOf("Foo", StringComparison.CurrentCultureIgnoreCase) >= 0;
Он должен либо вернуть bool?
(которого он не делает), либо не компилировать.