C#-泛型枚举类型转换
关于使用C#-泛型枚举类型转换,c#,generics,enums,C#,Generics,Enums,关于使用Enums的泛型类,我有几个问题 首先,我这样宣布我的班级: public class MyClass<TEnum> where TEnum : struct, IConvertible 谢谢。您已经声明了您的泛型类型参数以实现IConvertible,并且该接口具有ToInt32方法。自从声明了需求IConvertible之后,您已经拥有了所需的内容。只需使用ToInt32等方法: public class MyClass<TEnum> where TEnum
Enum
s的泛型类,我有几个问题
首先,我这样宣布我的班级:
public class MyClass<TEnum> where TEnum : struct, IConvertible
谢谢。您已经声明了您的泛型类型参数以实现
IConvertible
,并且该接口具有ToInt32
方法。自从声明了需求IConvertible之后,您已经拥有了所需的内容。只需使用ToInt32等方法:
public class MyClass<TEnum> where TEnum: struct, IConvertible
{
public int SomeMethod(TEnum value)
{
return value.ToInt32(null);
}
}
公共类MyClass其中TEnum:struct,IConvertible
{
公共整数方法(TEnum值)
{
返回值.ToInt32(空);
}
}
例如.NET类型decimal是一个结构和一个IConvertable:
MyClass<decimal> test = new MyClass<decimal>();
Console.WriteLine(test.SomeMethod(150m));
MyClass测试=新建MyClass();
控制台写入线(测试方法(150m));
对于其他类,请确保实现IConvertible。对于第一部分,请参见此处的枚举位置?对于第二部分,不能在函数内部重新声明
值,因为它已经是一个参数。嘿,我从VBForums认识你,呵呵。我记得你的狗阿凡达!无论如何,ToInt32需要一些FormatProvider。。。?此外,ToInt32使用Convert。使用Convert.ToInt32(value)不是更容易吗?对于参数值,您应该可以简单地使用null
。您可能也可以轻松地使用Convert.ToInt32
。
MyClass<decimal> test = new MyClass<decimal>();
Console.WriteLine(test.SomeMethod(150m));