私はこの拡張メソッドを持っています:
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;
これは奇妙です。
2 番目の例では機能するのに、最初の例では機能しないのはなぜですか?
ここで私を助ける良い代替手段は何ですか? のリテラルがないため、
short
またはushort
次のように各整数を手動でキャストするよりも簡単な代替手段を見つけることができません。ushort p = 3; if (p.In((ushort)1, (ushort)2, (ushort)3, (ushort)4, (ushort)5)) return;