Я только что обновился с VS 2010 до 2015 года. Мне нравится новый null-conditional operator, который также известен как нулевое распространение. Это позволяет упростить код, например:Оператор с нулевым условием оценивает bool не на bool? как ожидалось
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?
(который не делает) или не компилировать.
Упс, я думаю, что у меня есть это сам, вы можете переписать его: 'int? indexof = text? .IndexOf ("Foo", StringComparison.CurrentCultureIgnoreCase); bool contains = indexof> = 0; ' –
Я проголосовал за оператор'?> = '.:) –
@DStanley: такой, который включает в себя другие [категории операторов] (https://msdn.microsoft.com/en-us/library/aa691323 (v = vs.71) .aspx), чем первичный? Нанесет больше вреда, чем пользы. –