嘿我只是碰到了下面的語句如果else語句設定值什麼這叫
return name != null ? name : "NA";
來到我只是想知道這是什麼東西稱爲.NET
做的?代表,那麼做這個......?
嘿我只是碰到了下面的語句如果else語句設定值什麼這叫
return name != null ? name : "NA";
來到我只是想知道這是什麼東西稱爲.NET
做的?代表,那麼做這個......?
這是一個「有條件的經營者」俗稱the Ternary operator
它在許多編程語言中。
它也經常被稱爲「第三」運營商,但應該指出,這是不正確的。 – 2012-03-14 03:34:16
三元剛剛表示操作員由三部分組成,對嗎? – 2014-12-28 03:00:39
正如獅子在評論中所說,他們被稱爲ternary operators
,雖然他們也被稱爲inline if statmenets
和conditional operator
。
如果您想了解更多關於他們,這個維基百科頁面會有所幫助,並且它有很多編程語言的例子:http://en.wikipedia.org/wiki/%3F:
這是條件運算符是一個三元運算符。由於沒有那麼多的其他三元操作符(操作符有三個參數),許多人相信它被稱爲三元操作符,這是不準確的!
我把你引用到C#4規範的第7.14節,其中規定「*':'運算符被稱爲條件運算符,有時也被稱爲三元運算符。」爲什麼你相信那些相信條件運算符有時被稱爲三元運算符是錯誤的? – 2012-03-14 05:35:38
@Eric Lippert因爲「三元運營商」是一類運營商而不是運營商。這與調用'!'一元運算符相同。 – wintersolutions 2012-03-14 11:47:03
如果'!'是語言中唯一的一元操作符,那麼從上下文中可以清楚地看到「一元操作符」是什麼。 – 2012-03-14 12:09:39
剛剛添加到別人的答案,注意,...
condition ? trueResult : falseResult
...只有condition
,要麼trueResult
或falseResult
(但不能同時)進行評價。這使得它可能寫出這樣的代碼......
string name = user == null ? "<nobody>" : user.Name;
...沒有NullReferenceException
以來user.Name
拋出的風險,如果user
是非null
纔會被評估。將此行爲與VB.NET的If
operator和IIf
function進行比較。
他們被稱爲'三運營商'。他們暗示,如果條件評估爲「真」,那麼'?'後面的表達式將被執行,否則':'後面的表達式將被執行。 – Lion 2012-03-14 03:30:22
這可以縮短爲'返回名稱? 「NA」;' – 2012-03-14 03:32:31
值得指出@Jonathan提到的'''是'null-coalescing operator'。即:如果左側的值爲空,則將值返回到右側,因此可以使用而不是三元運算符。但是,如果你要'返回string.IsNullOrEmpty(名稱)? 「NA」:name',那麼空合併運算符就沒有用了。 – 2012-03-14 03:39:56