泛型枚举类型转换

本文关键字:类型转换 枚举 泛型 | 更新日期: 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方法。

相关文章: