当前位置:  开发笔记 > 编程语言 > 正文

Nullable初始化为null - 理解源代码

如何解决《Nullable初始化为null-理解源代码》经验,为你挑选了1个好方法。

我正在查看.NET Nullable类的以下代码:http: //referencesource.microsoft.com/#mscorlib/system/nullable.cs,ffebe438fd9cbf0e

我想知道,以下用途的行为是什么:

int? x = null;

显然,x.hasValue()返回false,但是我看到在构造函数中,hasValue属性总是设置为true.

那我错过了什么?



1> angry person..:

"构造函数",是的,显式编写的构造函数Nullable,但是所有结构都有一个额外的构造函数,一个不允许实现的无参数默认构造函数.这将始终存在.

因此,您可以将问题中的代码视为与此类似:

int? x = new Nullable();

实际上,如果我们编译你的代码和我的代码并查看生成的IL:

你的代码:

IL_0001:  ldloca.s    00 // a
IL_0003:  initobj     System.Nullable

我的代码:

IL_0001:  ldloca.s    00 // a
IL_0003:  initobj     System.Nullable

所以他们完全相同.

结构的默认构造函数将所有字段初始化为逐字节零,对于bool字段等于false,对于数字字段等于0,null对于引用类型字段等等.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有