2 回答

TA貢獻(xiàn)1797條經(jīng)驗 獲得超4個贊
我有時會使用這樣的表達(dá)方式:-
string a = null;
if((a = GetValue()) != null){
DoSomething();
}
分配除 null 以外的其他值并檢查它是否為布爾表達(dá)式是一種很好的語法。盡管請記住,最外面的括號總是要求一個布爾表達(dá)式。

TA貢獻(xiàn)1886條經(jīng)驗 獲得超2個贊
但我想知道是否有任何情況下 if 采用除 bool 以外的任何值。
不,不,有點像
if-else(C# 參考)
if 語句根據(jù)布爾表達(dá)式的值標(biāo)識要運行的語句
以下僅適用,因為結(jié)果是布爾值
if (a=Char.IsLower(c))
它相當(dāng)于
a=Char.IsLower(c);
if (a)
和下面一樣a,b變成結(jié)果Char.IsLower(c)
bool a = false;
bool b = false;
a = b = Char.IsLower(c)
...結(jié)果必須等于 bool(故事結(jié)束)
警告(如果你想這樣稱呼它)是可以為空的和Lifted Operators。提升的運算符是通過“提升”已經(jīng)存在于不可空形式上的運算符來處理可空類型的運算符,但它仍然必須等同于布爾表達(dá)式。
?int bob = null
if(bob > 3) { ... }
其他資源
12.4.8 提升運營商
對于等式運算符
== !=
如果操作數(shù)類型都是不可為空的值類型并且結(jié)果類型是 bool,則存在運算符的提升形式。提升的形式是通過添加單個 ? 每個操作數(shù)類型的修飾符。提升的運算符認(rèn)為兩個空值相等,一個空值不等于任何非空值。如果兩個操作數(shù)都不為空,則提升的運算符解開操作數(shù)并應(yīng)用底層運算符來產(chǎn)生 bool 結(jié)果。
對于關(guān)系運算符
< > <= >=
如果操作數(shù)類型都是不可為空的值類型并且結(jié)果類型是 bool,則存在運算符的提升形式。提升的形式是通過添加單個 ? 每個操作數(shù)類型的修飾符。如果一個或兩個操作數(shù)為空,則提升的運算符產(chǎn)生值 false。否則,提升的運算符會展開操作數(shù)并應(yīng)用底層運算符來生成 bool 結(jié)果。
- 2 回答
- 0 關(guān)注
- 111 瀏覽
添加回答
舉報