Tob*_*oby 2 c# generics enums nullable
我有一个方法,我用来将字符串转换为通用枚举.可以将结果值分配给可以为空的字段.
对于不可为空的情况,以下工作正常,但我无法弄清楚如何正确调整它以允许可为空的返回类型,比如在参数为null的情况下,或者实际上如何允许返回类型可能是null或不可为空(也许这是不可能的?).每置换Nullable<T>和T?,我试过仍然导致的返回值和方法名称都被红色squiggleys
private static T ConvertStringToEnumValue<T>(string value)
{
// Converts string to a given enum-type T value.
T EnumValue;
try
{
EnumValue = (T)Enum.Parse(typeof(T), value);
if (!Enum.IsDefined(typeof(T), EnumValue))
{
return default(T); // 0 for enum
}
}
catch (Exception e)
{
return default(T); // 0 for enum
}
return EnumValue;
}
Run Code Online (Sandbox Code Playgroud)
没有类型参数约束允许'类型可以为null'.T?作为返回类型是被禁止的,并没有限制(的class,new()等等)是有帮助这里.
你必须制作两个方法,其中一个你必须用structconstaint来装饰以允许Nullable<T>:
private static T? ConvertStringToEnumValue<T>(string value) where T : struct
Run Code Online (Sandbox Code Playgroud)