2つの列挙型と1つのジェネリックメソッドがあります。ジェネリック型Tは、列挙型のいずれかである可能性があります。
public enum myEnumA
{
a,
b
}
public enum myEnumB
{
c,
d
}
public void myMethod<T>()
{
if (typeof(T) is myEnumA)
{
//do something
}
else if (typeof (T) is myEnumB)
{
//do something else
}
}
コンパイラは、ifチェックに関して、「指定された式は指定された型ではない」と通知します。実行時に正確な列挙型がどれであるかを知る方法はありますか?
あなたが欲しい:
if (typeof(T) == typeof(MyEnumA))
タイプを比較します。is
操作者はかどうかをテストするためのものである値は、特定のタイプのものです。
ジェネリックメソッド内で特定の型をテストする必要があるということは、結局のところ、実際にはあまりジェネリックではない可能性があることを示唆していることに注意してください。代わりに、オーバーロードまたは完全に別個のメソッドを使用することを検討してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加