在 C# 3.0 中,您可以将 null 分配给 int? 类型(在 CLR int? 中是一个结构):
int? a = null;
但是当你定义一个自定义结构时:
struct MyStruct
{
}
编译这段代码时出错:
MyStruct a = null;
错误如下:
Cannot convert null to 'Example.MyStruct' because it is a non-nullable value type
而int?是 CLR 中的一个结构,我们可以为它分配 null 有点违反直觉。我想 null 被隐式强制转换或装箱为 certian int?表示空值的值。它是如何精确完成的?如何以可以执行该行的方式扩展 MyStruct:
MyStruct a = null;