c#使用不同的参数约束重载泛型函数

时间:2011-02-28 09:43:16

标签: c# generics overloading

我有以下功能:

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 )

作为一个小历史,我有一个包含字符串值的字典,我会在字典中使用一致的'Foo'扩展,以允许我添加new()对象或空字符串(视情况而定)。

1 个答案:

答案 0 :(得分:4)

不,您不能通过类型参数约束重载。但是,是的,可以通过类型参数的数量重载:

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

(注意string不在Foo的泛型类型参数列表中;它本身不是类型参数,它只是用作Dictionary的类型参数 。)