C# nullable<T> 用法小结
今天在园子里看到一个关于C#中对于可空类型的描述的帖子,感觉不错于是自己写了个小例子尝试下。
在C#中,对于可空类型描述为:Nullable<T>, 它表示该类型是可以为空的一个类型。它被定义为一个结构(struct)而非一个类(class)... 在这里用一个小Demo来看看它的用法
int? intTest;
int? nullIntValue = new Nullable<int>();
intTest = 999;
try
{
//1. output an interger value
Console.WriteLine("output an interger value: {0}", intTest);
//2. output an boxed (int) value
object boxedObj = intTest;
Console.WriteLine("output an boxed integer type: {0}", boxedObj.GetType());
//3. output an unboxed int value
int normalInt = (int)boxedObj;
Console.WriteLine("output an unboxed integer value: {0}", normalInt);
//4. output an nullable object
object nullObj = nullIntValue;
Console.WriteLine("output an nullable equals null ? : {0}", (nullObj == null));
////output an nullable value (Error: non refferenced)
//int nullIntTest = (int)nullObj;
//Console.WriteLine("output an nullable value: {0}", nullIntTest);
//5. output an value of nullable object
Nullable<int> nullIntTest = (Nullable<int>)nullObj;
Console.WriteLine("Unboxed an nullable value: {0}", nullIntTest);
//int nullIntTest = (int)nullObj;
//Console.WriteLine("Unboxed an nullable value: {0}", nullIntTest);
}
catch (Exception ex)
{
Console.WriteLine("Error happend: {0}", ex.Message);
}
Console.ReadKey();
输出结果如下:
在上面这段代码中,我尝试了将一个不为空的可空值类型实例装箱后的值分别拆箱为普通的值类型以及可空值类型(1,2,3)。之后,我又将一个没有值的可空值类型实例testNull装箱为一个空引用,之后又成功的拆箱为另一个没有值的可空值类型实例(4,5)。如果此时我们直接将它拆箱为一个普通的值类型,编译器会抛出一个NullReferenceException异常。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现