我剛剛從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)比主?會做更多的傷害,而不是好的。 –