`Nullable <t> t = null`如何工作?

时间:2015-11-02 14:08:54

标签: c# nullable roslyn

由于我想知道Nullable<T>上某些操作的效率,我去检查了Microsoft网站上的reference source(并了解到HasValueGetValueOrDefault不涉及任何转换,而.Value确实如此。浏览文件,我注意到它是一个不可变类型,具有T

的隐式转换
 public static implicit operator Nullable<T>(T value) {
     return new Nullable<T>(value);
 }

我认为允许我写一行像

int? x; 
x = 3;

然而,这并没有解释如何

x = null;

的工作原理。 Nullable是值类型,因此通常不允许这样做。最初我期望operator=或类似的重载,但我无法弄清楚它的论点应该是什么(除了Nullable<T>)。

我想那时编译器知道Nullable并以特殊的方式处理它们,但我猜测开发团队本来想把它保持在最低限度,所以我想知道编译器到底是什么知道。它如何处理像x = null这样的行,以及我在reference implementation中找不到的其他内容在幕后做了什么?

0 个答案:

没有答案