【发布时间】:2012-12-05 18:23:26
【问题描述】:
我有这个扩展方法:
public static bool In<T>(this T source, params T[] list)
{
return list.Contains(source);
}
现在我需要对ushort 使用上述方法。当我尝试时
ushort p = 3;
if (p.In(1, 2, 3, 4, 5))
return;
第一行将3 转换为ushort 井。但是当3作为参数传递时,我得到了错误
'ushort' 不包含'In' 的定义,并且最佳扩展方法重载'Extensions.In(T, params T[])' 有一些无效参数。
但这有效:
ushort p = 3;
if (Extensions.In(p, 1, 2, 3, 4, 5))
return;
这很奇怪。
为什么它适用于第二个示例,而不适用于第一个示例?
-
在这方面有什么好的选择可以帮助我?由于
short或ushort没有文字,我找不到比手动转换每个整数更简单的替代方法:ushort p = 3; if (p.In((ushort)1, (ushort)2, (ushort)3, (ushort)4, (ushort)5)) return;
【问题讨论】:
标签: c# .net extension-methods parameter-passing ushort