我們都知道VB的Nothing
與C#的null
類似,但並不相同。 (如果你不知道的是,看看this answer第一。)是否有一個VB.NET表達式* always *會產生null?
只是出於好奇,我想知道以下幾點:
是否有一個VB.NET表達式總是產生null
?
舉一個具體的例子,採取以下語句:
Dim o As Object = If(myBool, 5, ...)
是否有可能有東西來取代...
,這樣o
是5
當myBool
是真實的,Nothing/null
當myBool
是假的?
明顯的解決方案,這是行不通的:
Nothing
問題(見上面的鏈接的答案),DirectCast(Nothing, Object)
(投用選項嚴格在編譯時錯誤),DirectCast(Nothing, Integer?)
適用於本示例,但不起作用一般(如果在此示例中將5
替換爲5.0
,則需要修改轉換)。
明顯的解決方法(將不能算作答覆):
- 聲明一個
Object
變量或字段,其設置爲Nothing
並使用該對...
, - 定義總是方法或屬性返回
Nothing
, DirectCast
第二個參數(5
)到Object
。
注意:上面的示例只是一個示例。問題本身以粗體書寫。
你想要一個適用於參考和值類型的單線程嗎?如果值類型不可爲空會怎麼樣?你能顯示這個代碼的_usage_嗎? – CodeCaster
你的問題不是很清楚,你爲什麼總是需要'null'?使用可空類型而不是對象有什麼問題?如果你的例子是\t可互換提供了一個更好的例子,'Int32?'不是一個選項。 –
@TimSchmelter:我認爲編寫一個自動化的C# - > VB.NET轉換器可能會有用,但主要我只是好奇。我不明白這個問題如何不清楚:「VB.NET表達式」是明確定義的,表達式的期望返回值在問題中清楚地陳述。 – Heinzi