gdo*_*ica 1 .net c# compiler-construction null nullable
你怎么能访问null nullable的propery HasValue?
我查看了编译的代码,它不是语法糖.
为什么这不会抛出NullReferenceException:
int? x = null;
if (x.HasValue)
{...}
Run Code Online (Sandbox Code Playgroud)
Bro*_*ass 11
那是因为它是一个值类型而不是引用类型的int?短Nullable<int>- 所以你永远不会得到一个 NullReferenceException.
该Nullable<T>结构看起来是这样的:
public struct Nullable<T> where T : struct
{
private readonly T value;
private readonly bool hasValue;
//..
}
Run Code Online (Sandbox Code Playgroud)
当你分配时null,编译器会支持一些神奇的事情(它Nullable<T>以这种方式知道并对它们进行特殊处理),它只是将该hasValue字段的字段设置为false - 然后由HasValue属性返回.
| 归档时间: |
|
| 查看次数: |
173 次 |
| 最近记录: |