2012-05-23 34 views
4

如果我執行以下語句:如何檢索VB.net中給定結構的默認值?

dim defaultDate as Date = Nothing 

defaultDate包含Date結構的默認值

我懷疑有一個乾淨的方式中檢索該值,如某種buitin不變的,但我無法找到它。

問:什麼是乾淨的方式來檢索VB.net中給定的結構的默認值?

+0

這真的讓我吃驚,你可以得到這樣的數據不被拋出的異常。 – Panzercrisis

+0

@Panzercrisis我可以向你保證,這條線不會崩潰。這是我目前檢索默認值的方式,它的工作原理 –

+0

Nah,我的意思是它讓我感到吃驚並且很有趣。 – Panzercrisis

回答

6

正如您已經發現的,Nothing是在VB.NET中爲值類型執行此操作的正確方法。

C#與default(T)有更明確的方式。

+0

所以在VB中沒有默認的等價物(T)? –

+4

@SamuelRossille在VB.NET中'Nothing'實際上是'default(T)'。 http://stackoverflow.com/a/303525/492405大多數人認爲VB.NET中的Nothing是指「null」。它實際上意味着「默認值」,並且對於恰好爲空的所有引用類型。對於值類型,它是默認值。 – vcsjones

+1

我是其中一個人,直到4秒前... – Yatrix

1

默認DateDate.MinValue

0:00:00(午夜)1月1日,0001

Date Data Type (Visual Basic)

Dim d As Date = Nothing 
If d = Date.MinValue Then 
    ' yes, we are really here ' 
End If 

我通常喜歡Date.MinValue代替Nothing,但我認爲這是一個品味的問題。

+0

我會說OP正在尋找一種方法來獲取任何給定結構的默認日期,而不僅僅是日期。 –

+0

@JoelEtherton:OP想知道這個常數:「有沒有一種簡潔的方式來檢索這個值,就像某種常數一樣,但我無法找到它。」_ **編輯**哦,對了,我錯過了最後一部分。 –

+0

@TimSchmelter應該從一開始就更加明確; =)...但是你爲什麼叫我OP?這是什麼意思 ? –

2

值類型不需要顯式初始化。

默認情況下,所有字段都被初始化爲默認值。

dim defaultDate as Date ' Nothing not required 
Console.WriteLine(defaultDate) ' 1/1/0001 12:00:00 AM 

說明在默認的構造函數herehere