亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c# 中的賦值運算符在任何情況下都采用除 bool 之外的任何其他值嗎?

c# 中的賦值運算符在任何情況下都采用除 bool 之外的任何其他值嗎?

C#
眼眸繁星 2022-07-23 17:19:01
我最近開始學習 c# 并知道 if 條件只接受賦值運算符的布爾值,如下面的代碼所示。但我想知道是否有任何情況下 if 采用除 bool 以外的任何值。我嘗試將“a”的類型更改為 char,但它給了我一個編譯時錯誤。Console.Write("Enter a character: ");char c = (char)Console.Read();bool a;if (a=Char.IsLetter(c)){    if (a=Char.IsLower(c))    {        Console.WriteLine("The character is lowercase.");    }    else    {        Console.WriteLine("The character is uppercase.");    }}else{    Console.WriteLine("Not a character");}
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

我有時會使用這樣的表達方式:-


string a = null;


    if((a = GetValue()) != null){

    DoSomething();

    }

分配除 null 以外的其他值并檢查它是否為布爾表達式是一種很好的語法。盡管請記住,最外面的括號總是要求一個布爾表達式。


查看完整回答
反對 回復 2022-07-23
?
MM們

TA貢獻1886條經驗 獲得超2個贊

但我想知道是否有任何情況下 if 采用除 bool 以外的任何值。


不,不,有點像


if-else(C# 參考)


if 語句根據布爾表達式的值標識要運行的語句


以下僅適用,因為結果是布爾值


if (a=Char.IsLower(c))

它相當于


a=Char.IsLower(c);

if (a)

和下面一樣a,b變成結果Char.IsLower(c)


bool a = false;

bool b = false; 

a = b = Char.IsLower(c)

...結果必須等于 bool(故事結束)


警告(如果你想這樣稱呼它)是可以為空的和Lifted Operators。提升的運算符是通過“提升”已經存在于不可空形式上的運算符來處理可空類型的運算符,但它仍然必須等同于布爾表達式。


?int bob = null


if(bob > 3) { ... }

其他資源

來自C# 規范

12.4.8 提升運營商

  • 對于等式運算符== !=

    • 如果操作數類型都是不可為空的值類型并且結果類型是 bool,則存在運算符的提升形式。提升的形式是通過添加單個 ? 每個操作數類型的修飾符。提升的運算符認為兩個空值相等,一個空值不等于任何非空值。如果兩個操作數都不為空,則提升的運算符解開操作數并應用底層運算符來產生 bool 結果。

  • 對于關系運算符< > <= >=

    • 如果操作數類型都是不可為空的值類型并且結果類型是 bool,則存在運算符的提升形式。提升的形式是通過添加單個 ? 每個操作數類型的修飾符。如果一個或兩個操作數為空,則提升的運算符產生值 false。否則,提升的運算符會展開操作數并應用底層運算符來生成 bool 結果。


查看完整回答
反對 回復 2022-07-23
  • 2 回答
  • 0 關注
  • 102 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號