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

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

C# 中判斷 bool? 是否為 true 的正確姿勢

C# 中判斷 bool? 是否為 true 的正確姿勢

C#
一只名叫tom的貓 2018-08-07 07:10:07
請問 C# 中判斷可空布爾類型變量值的正確姿勢是什么?如果直接判斷( bool? isOk; if (isOk) ; )會出現下面的錯誤提示:Cannot implicitly convert type 'bool?' to 'bool'
查看完整描述

1 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

bool? success = null;if(success.GetValueOrDefault()){    //TODO: do what you want.}

原因:其實翻看  Nullable<T> 的源碼就應該知道,T 的約束是 struct(其實這應該算常識),對應的當類型為 Nullable<T> 的變量被“賦值”為null時, GetValueOrDefault() 返回的值實際上 等于  default(T) ,原因是  bool? success = null; 實際上對應的代碼是  bool? success = new Nullable<bool>();//所有結構都有一個默認無參數的構造函數。 (編譯器的功勞哦)。

當  bool? success =  后面跟的是一個編譯時無法確定是否為  null 的表達式時,編譯器會生成一個 if else 語句,判斷表達式運行的值,如果為 null 跟上面的一樣,調用默認無參數的構造函數,如果不為 null,則調用  public Nullable(T value) 有參構造函數。


查看完整回答
反對 回復 2018-08-23
  • 1 回答
  • 0 關注
  • 2271 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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