2011-02-28 105 views
4

我有以下功能:C#泛型重載函數使用不同的參數限制

public static V AddIfNotPresent<K, V>(this Dictionary<K, V> store, K key) where V : new() 

public static V AddIfNotPresent<K, V>(this Dictionary<K, V> store, K key) 

首先...是有可能超載的功能以這種方式?

如果超載是不可能的我能更具體與我的功能和工具說:

public static string Foo<K, string>(this Dictionary<K, string> store, K key) 

隨着一點點的歷史我有一個字典字符串值和我住一個一致的「富」延伸允許我添加new()對象或空字符串(如適用)。

+1

'美孚'是不必要的,因爲它已經是一個字符串,你不需要第二個通用的。 – 2011-02-28 09:46:56

回答

4

不,您不能通過類型參數約束進行重載。但是,是的,你可以超載的類型參數的個數:

public static string Foo<TKey>(this Dictionary<TKey, string> store, TKey key) 

(注意:string是不是在泛型類型參數列表富;它不是一個類型參數本身,它只是作爲鍵入Dictionary參數

相關問題