2009-04-09 29 views
6

基本上,我有一個具有可選字典參數的函數。由於它是可選的,它需要一個默認值,我想將它設置爲空字典而不是Nothing。我該如何解決這個問題?如何在VB.NET中爲可選參數創建空字典

在Java中,我只想做到這一點:

Collections.<K,V>emptyMap() 

我該怎麼做在VB.NET等同?

(我正在使用.NET 3.5)。

回答

5

無法將空字典指定爲VB.Net中參數的默認值。 VB.Net僅支持可以在MetaData中編碼的值,並且創建一個新的Dictionary實例不是其中的一個。

儘管有一個選項,但有一個可選值,默認爲Nothing。在Nothing的情況下創建一個空字典。例如。

Public Sub SomeMethod(Optional ByVal map as Dictionary(Of Key,Value) = Nothing) 
    if map Is Nothing Then 
    map = new Dictionary(Of Key,Value) 
    ENd If 
    ... 
End Sub 
+0

謝謝,這也適用於...(可選ByRef myVar()爲Double = Nothing)。我拼命想出如何指定我的數組的默認值,直到我在你的答案中碰到'Nothing'。 – Stewbob 2010-03-22 13:33:27

9

.NET中沒有預先裝罐的空字典。要創建一個空字典,只需轉到新詞典()。

但是,我相信你不會被允許使用這個可選參數的默認值,因爲它不能在編譯時計算並放入DefaultValueAttribute中。相反,您需要重載該函數:有一個重載需要字典參數,另一個不重載。後者將只是新建一個空字典,並稱之爲第一次重載。

0

根據不同的目的,它可能是有點多資源節約型(即在內存方面)是否意味着將要空字典是爲0的容量創建:

var empty = new Dictionary<string, string>(0); 
相關問題