private bool? _success;
public bool Success
{
get
{
return _success ?? (_success = false);
}
}
爲什麼編譯器不能計算出正確的操作數始終爲false,並且需要我將其轉換爲bool
?C#可空性明確強制轉換需要
private bool? _success;
public bool Success
{
get
{
return _success ?? (_success = false);
}
}
爲什麼編譯器不能計算出正確的操作數始終爲false,並且需要我將其轉換爲bool
?C#可空性明確強制轉換需要
由於您指定給bool? _success
,因此右操作數爲Nullable<bool>
。這不能隱式地轉換爲布爾,這就是爲什麼需要轉換。
如果刪除任務,那麼它會很好地工作:
return _success ?? false;
此作品爲「假」是bool
了。
但是,當前的代碼在爲其分配值false
後返回_success
。 As _success
是bool?
,右側操作數返回bool?
,而不是bool
。
你會使用GetValueOrDefault()
通常這樣寫:
private bool? _success;
public bool Success
{
get
{
return _success.GetValueOrDefault(false);
}
}
第二個不會編譯 - 它有同樣的問題。第一個作品,但有不同的邏輯(因爲它不再*'_success'分配給'false'(但我同意,這是一個更常見的用法...) –
Wooops!你就是!它... – Reddog
請注意,如果你永遠讀'_success'直接,你不妨只使用自動屬性'Success'和報廢'_success考慮'(用'私人設置')。 'bool'默認爲'false'。當然,如果沒有隱含的'_success'爲'null'的私有實現細節,那麼這只是確定的。 – Brian