c# - 即使互斥约束,通用 C# 方法也模棱两可?
问题描述
为什么这两种方法被认为是模棱两可的?
public static T Work<T>(this MyClass thing) where T : class { ... }
public static T? Work<T>(this MyClass thing) where T : struct { ... }
约束class
和struct
是互斥的,不是吗?因此,对于任何类型,对这个方法的任何调用都应该是明确的,对T
吧?因为T
不能既是引用类型又是值类型......?
这只是 C# 编译器/语言定义中的疏忽吗?
我想要做的是创建一个通用方法,null
在某些情况下返回意味着“没有值存在”,并使该方法能够处理引用和值类型。对于值类型T
,我希望返回类型为Nullable<T>
或更短T?
。
解决方案
推荐阅读
- python - 如何在python 3X中的if语句中调用类和函数
- php - 将默认为 NULL 的 PHP 参数标记为可为空有什么不同吗?
- c# - 在 foreach 循环中提交事务
- php - 通过引用分配静态属性在 PHP5 和 PHP7 之间的行为不同
- python - 为什么使用 Message.get_payload() 给出正确的字符串,而使用 Message.get_payload(decode=True) 给出不正确的字符串?
- c# - 我正在尝试使用 NUnitEngine 运行测试。但是,它给了我 FileNotFoundException:无法加载文件或程序集。如何解决这个问题?
- java - 如何转换输入类型
- docker - 为什么elasticsearch docker image不断出现和消失?
- doxygen - 在 CLion 中修改 Doxygen 模板
- javascript - 我可以将 className 作为道具传递给 ReactJS 中的 StyledComponent 吗?