.net学习笔记--可空值类型

int n = 10;

string s = "hello";

//n = null; 编译器报错

//s = null;

int? n1 = 10;

n1 = null;//正常编译

原理:

在编译时int?时,其等价于Nullable,也就是范型结构体。

.net学习笔记--可空值类型_第1张图片
原理图

在使用的时候,int? n1 = 10;等价于下面:

Nullable n1;

n1.HasValue = true;

n1.Value = 10;

同时,Nullable n = null就是n.HasValue = false.

注意事项:

int?属于值类型,不属于引用类型,因此

string? s = "abc";//编译器会报错。因为图中T属于结构体,结构体数据值类型,string无法转换为T。

你可能感兴趣的:(.net学习笔记--可空值类型)