泛型枚举类型转换
本文关键字:类型转换 枚举 泛型 | 更新日期: 2023-09-27 18:16:37
我有一些关于Enum
s的通用类的问题。
首先,我这样声明我的类:
public class MyClass<TEnum> where TEnum : struct, IConvertible
但是,我得到一个错误,指出我的类不能与类型参数一起使用。
此外,我需要将Enum
的值转换为Integer
。我该怎么做呢?
public void SomeMethod(TEnum value)
{
int a = (int)value; // Doesn't work, need to cast to Enum first (?).
}
谢谢。
既然您声明了需求是不可转换的,那么您已经拥有了所需的东西。只需使用ToInt32等方法:
public class MyClass<TEnum> where TEnum: struct, IConvertible
{
public int SomeMethod(TEnum value)
{
return value.ToInt32(null);
}
}
例如。net类型decimal是一个结构体和一个iconvertable:
MyClass<decimal> test = new MyClass<decimal>();
Console.WriteLine(test.SomeMethod(150m));
对于其他类,请确保实现了IConvertible
您已经声明了实现IConvertible
的泛型类型参数,并且该接口具有ToInt32
方法。