業務對象正在返回short?
數據類型。這段代碼會破壞嗎?
我該如何將這個值變成一個變量?
short? myShort = SomeBusinessObject.UserBlah;
這是正確的嗎?如果它爲空,它會破壞嗎?
業務對象正在返回short?
數據類型。這段代碼會破壞嗎?
我該如何將這個值變成一個變量?
short? myShort = SomeBusinessObject.UserBlah;
這是正確的嗎?如果它爲空,它會破壞嗎?
是的,這是正確的。
你實際上是否試圖防止SomeBusinessObject爲空?如果是這樣,可爲空的類型將不會幫助你。您仍然需要檢查您的SomeBusinessObject是否爲空。
我假設這是這種情況,因爲如果UserBlah返回一個短,那麼它永遠不會是null(因爲short不是可爲空類型)。
myShort
如果業務對象返回null
將爲null
。
您不能直接引用myShort
作爲值類型,所以這沒問題。
您可以使用myShort.HasValue
來查看myShort
是否爲null
。
使用myShort.Value
來獲得該值。如果沒有定義值,它會拋出異常。
您可以使用GetValueOrDefault()
並傳入默認值以獲取值,即使沒有定義值(null
)。如果可空類型爲null
,此函數返回您傳入的值。
myShort只會爲空,如果UserBlah
隱式轉換爲Nullable<Int16>
,並將其設置爲null,在這種情況下也不會斷裂,除非您嘗試訪問的myShort.Value
成員。
你也可以這樣做:
short defaultValue = 0;
short myShort = SomeBusinessObject.UserBlah ?? defaultValue;
這是正確的。您只需如果你分配到myShort一個不可爲空的短,在這種情況下,你必須檢查的HasValue,像這樣擔心:
short s = myShort.HasValue ? myShort.Value : (short) 0; // or some other short value
GetValueOrDefault() – Nick 2009-04-29 20:21:45
爲了得到它變成一個變量使用myShort.Value檢查myShort後.HasValue
不要忘了空合併運算符。
short myShort = SomeBusinessObject.UserBlah ?? 0;
如果SomeBusinessObject.UserBlah爲null,它只是將值傳遞給?所以你可以默認它。
我認爲你需要澄清你認爲可能是空的。許多答案正在對UserBlah返回的內容做出假設。我的猜測(因此我的答案)是,你試圖防止SomeBusinessObject爲空。然而,這是一個猜測,更多的信息會很好。 – 2009-04-29 20:22:30