字典作为参数,其中Value-Type无关紧要

时间:2010-03-16 10:29:15

标签: c#

我有一个函数,与给定值相比,它返回​​Dictionary-Keys-List的下一个更高的值。如果我们有{1,4,10,24}的密钥列表和给定值8,则该函数将返回10.

显然,Dictionary的Value-Part的类型对函数无关紧要,

的函数代码
Dictionary<int, int> 

Dictionary<int, myClass> 

会是一样的。

当我想用任何一个字典调用函数时,方法头必须是什么样子,int是key-Type而value-Type是无关的?

我试过了:

private int GetClosedKey(Dictionary<int, object> list, int theValue);

但是当我用词典调用它时,它说有非法的参数。我不想为我的函数可能被调用的每个不同的值类型复制'n'paste函数。任何想法,如何实现?

提前致谢, 弗兰克

1 个答案:

答案 0 :(得分:11)

你可以把它变成通用的:

private int GetClosedKey<T>(Dictionary<int, T> list, int theValue)

在大多数情况下,当您调用方法时,您可以使用类型推断来避免必须为T指定类型参数。

但是,我会考虑将其更改为:

private int GetClosedKey(ICollection<int> list, int theValue)

然后用:

调用它
int value = GetClosedKey(dictionary.Keys, desiredValue);

这使得代码更加通用 - 毕竟,没有必要将它与字典紧密结合。除此之外,这将使测试变得更加简单。