我已经编写了一个简单的扩展方法来帮助将字符串解析为可为空的枚举类型.
public static TEnum? ParseNullableEnum<TEnum>(this string? str)
where TEnum : Enum
{
if (str is null)
{
return null;
}
if (!Enum.TryParse(typeof(TEnum), str, ignoreCase: true, out var source))
{
throw new ArgumentOutOfRangeException(nameof(str), str, null);
}
return (TEnum)source;
}
如您所见,返回类型为TEnum?
,其中TEnum
是Enum
.并且启用了Nullable,因此Null是有效的值.但是,我在第return null;
行收到一个错误
CS0403:无法将Null转换为类型参数‘TEnum’,因为它可能是不可为Null的值类型.请考虑改用默认设置(‘TEnum’).
这是一个VS错误,还是我做错了什么?我不会转换为TEnum
,输出类型为TEnum?
...对吗?