C# 重载具有不同参数约束的泛型函数

发布于 2024-10-19 22:44:24 字数 490 浏览 2 评论 0原文

我有以下功能:

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()对象或空字符串(视情况而定)。

I have the following functions:

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 )

First off... is it possible to overload the functions in this way?

If overloading is not possible could I be more specific with my functions and implements say:

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

As a little History I have a Dictionary with string values and I'd live a consistent 'Foo' extension of the Dictionary to allow me to add new() objects or an empty string (as appropriate).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

残龙傲雪 2024-10-26 22:44:24

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

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

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

No, you can't overload by type parameter constraints. But yes, you can overload by the number of type parameters:

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

(Note that string isn't in the generic type parameters list for Foo; it's not a type parameter itself, it's just used as a type argument for Dictionary.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文