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

int n = 10;

string s = "hello";

//n = null; 编译器报错

//s = null;

int? n1 = 10;

n1 = null;//正常编译

原理:

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

原理图

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

Nullable n1;

n1.HasValue = true;

n1.Value = 10;

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

注意事项:

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容