2009-07-29 28 views
7

我想知道 - 什麼時候我想在可空類型上使用.Value成員,而不是僅僅調用變量本身?可爲空的變量類型 - .value成員

例如:

bool? b =真;

我爲什麼要使用b.Value獲得的價值,而不是僅僅使用B的? .Value調用添加什麼優勢或功能?

回答

13

value屬性是隻讀的,將返回實際值類型。 value屬性不能爲null。

如果你希望有一個可爲空,然後返回一個值檢查.HasValue然後參考價值。舉例來說,如果你想要一個可空的值賦給一個普通的布爾那麼你必須引用它的價值:

bool? nullableBool = null; 

if (nullableBool.HasValue) 
{ 
    bool realBool = nullableBool.Value; 
} 

但是,下列不會編譯:

bool? nullableBool = true; 
bool realBool = nullableBool; // Won't work 
+0

太棒了!這就說得通了。非常感謝 :)) – Valerie 2009-07-29 20:23:08

3

.Value返回一個bool而不是bool?這將允許您將它用作不期望可爲空類型的函數的參數。

1

唯一的區別是它們是2種不同的類型。如果您有bool?然後它是一個可空類型的布爾。

如果你打電話b.Value你實際上返回一個布爾,而不是一個布爾?

微妙的,但是當你需要的對象的非空的版本,使用.Value屬性。

+0

錯字。薩特爾=微妙。 – 2009-07-29 20:18:32

1

對於我來說,沒有那麼多價值的是財產「的HasValue」當你想使用方法/基礎類型的屬性,我覺得很有用

2

。不適用於布爾。讓我說明與DateTime

DateTime? d; 
int month = d.Value.Month; 

你不能直接從d訪問一個月屬性,因爲日期時間?沒有這個屬性。