c# - C# 7.3 枚举约束:为什么我不能使用可为空的枚举?
问题描述
既然我们有枚举约束,为什么编译器不允许我编写这段代码?
public static TResult? ToEnum<TResult>(this String value, TResult? defaultValue)
where TResult : Enum
{
return String.IsNullOrEmpty(value) ? defaultValue : (TResult?)Enum.Parse(typeof(TResult), value);
}
编译器说:
错误 CS0453 类型“TResult”必须是不可为空的值类型才能将其用作泛型类型或方法“Nullable”中的参数“T”
解决方案
你可以,但你必须添加另一个约束:struct
约束。
public static void DoSomething<T>(T? defaultValue) where T : struct, Enum
{
}
推荐阅读
- c - 使用 memcpy 从数组转换为 int
- swiftui - 无法分配给属性:“自我”在 SettingView 中是不可变的
- vba - 基于先前的组合框写入组合框不起作用
- php - 将多维数组上嵌套数组的数组键从整数更改为字母
- python - 字典项之间的比较
- apache-spark - Spark SQL 返回所有空值,而直接 Hive 有效,通过 Spark 直接 Parquet 有效
- c++ - C++:未处理的异常:内存位置的 std::out_of_range
- django - 如何使用 Djoser 和 React Native 通过电子邮件激活帐户?
- python - Discord.py 中文本的相对位置
- jmeter - 在 Jmeter 中使用断言变量作为响应的问题