5

是否可以有一个无界泛型类型的泛型约束?

例如:

public T DoSomething<T>(T dictionary) where T : IDictionary<,>
{
    ...
}

编辑:只是为了解释上下文,我想将方法​​的使用限制为 IDictionary,但对于方法本身,TKey 和 TValue 到底是什么并不重要。

4

3 回答 3

8

这是不可能的,您需要指定类型参数:

public T DoSomething<T, TKey, TValue>(T dictionary) where T : IDictionary<TKey, TValue> { ... }
于 2012-08-01T18:08:41.203 回答
1

rosylin github中有一个问题,但是还没有完成。所以现在不可能,但我希望它会相对较快。

于 2017-01-06T18:07:02.390 回答
0

不,你不能那样做。也许你可以使用

public IDictionary<TKey, TValue> DoSomething<TKey, TValue>(IDictionary<TKey, TValue> dictionary)
{
...
}
于 2012-08-01T18:10:42.843 回答