我知道可空值类型的机制。但是,我对以下内容感兴趣:Nullable 值类型正在使用结构(来自https://referencesource.microsoft.com/#mscorlib/system/nullable.cs,ffebe438fd9cbf0e)public struct Nullable<T> where T : struct { public Nullable(T value) { /* ... */ } public bool HasValue {get;} public T Value {get;}}我可以像这样使用Nullable<int> i = null;现在,我以同样的方式创建自己的 Nullable-Struct:public struct MyNullable<T> where T : struct { public MyNullable(T value) { /* ... */ } public bool HasValue {get;} public T Value {get;}}为什么我做不到MyNullable<int> i = null;现在?我知道,struct 的值不能为 null - 但是为什么 struct Nullable 的值可以为 null?允许这样做的机制在哪里?
1 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
允许这样做的机制在哪里?
在 C# 编译器本身中。Nullable<T>
是一种具有许多额外规则的特殊类型,包括如何null
处理(比较和赋值)以及如何处理运算符(请参阅:“提升运算符”)。
还有就是还支持在运行时进行Nullable<T>
,特别“拳击”的规则。
您无法Nullable<T>
在自己的代码中进行模拟,因为这些特殊规则是您无法表达的。
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消