C#难点逐个击破(8):可空类型System.Nullable

时间:2023-07-04 14:49:40 

null与void

null值用来表示数据类型未被赋予任何值,它是一种引用类型;void表示没有类型,或者说是没有任何值。null与void的区别可以认为void是根本没有,而null是一个空箱子,里面什么都没有。

null值只能赋值给引用类型,这里注意到string也是一种引用类型;引用类型在C中称为“指针”,即存放变量位置的内存空间位置。将变量设为null,会显式地设置引用,且它本身不指向任何内存位置;

null值赋给值类型将导致编译错误。

C#难点逐个击破(8):可空类型System.Nullable

void用于方法值的返回,其本质并不是一个数据类型,它只是用于指出没有数据类型。

System.Nullable

C#中null值不能赋值给值类型,这里的值类型包括struct在内。原因是值类型不能包含引用,null作为一种“无”的引用当然不能被值类型所引用。在实际应用中这样会造成一些问题,假如现在一个数据int类型确实无法确定它的取值。这里就需要使用可空类型。


System.Nullable<int> i = null;
Console.WriteLine(i);


此时即可将int类型的i声明为null类型,同时该程序运行结果将看到无任何数据显示


System.Nullable<int> i = null;
Console.WriteLine(i);


此时即可将int类型的i声明为null类型,同时该程序运行结果将看到无任何数据显示

C#难点逐个击破(8):可空类型System.Nullable

使用GetType()查看其类型将抛出System.NullReferenceException异常


System.Nullable<int> i = null;
Console.WriteLine( i.GetType());


C#难点逐个击破(8):可空类型System.Nullable
System.Nullable<T>可简写为T?,如System.Nullable<int>可写作int?。可空类型在ADO.NET编程中大量使用。

另外Nullable类型的实例均拥有HasValue成员与Value成员,其中HasValue为bool类型,表示判断该实例是否有值;Value表示在HasValue有值时实例的取值,在HasVaue为false时使用Value将触发System.InvalidOperationException异常。


int? i = null;
Console.WriteLine(i.HasValue);
Console.WriteLine(i.Value);


C#难点逐个击破(8):可空类型System.Nullable

标签:C#,可空类型,System.Nullable
0
投稿

猜你喜欢

  • 关于Java集合框架面试题(含答案)上

    2021-06-02 13:29:44
  • C#编程获取资源文件中图片的方法

    2023-05-23 06:13:39
  • Android 中 viewpager 滑动指示器的实例代码

    2022-06-30 19:43:06
  • Junit测试多线程无法得到结果的问题解决

    2023-01-01 22:12:52
  • spring boot 打包jar jar没有主目录清单问题的完美解决方法

    2021-08-28 16:07:39
  • Spring Security实现HTTP认证

    2021-10-31 14:21:47
  • JavaMail入门教程之接收邮件(4)

    2023-11-09 03:12:34
  • Java实现去除文档阴影的示例代码

    2023-08-31 11:45:48
  • 如何动态修改JavaBean中注解的参数值

    2022-09-03 04:08:34
  • springboot接口参数校验JSR303的实现

    2023-01-19 03:14:56
  • C#访问C++动态分配的数组指针(实例讲解)

    2021-08-20 10:34:27
  • springboot @WebFilter注解过滤器的实现

    2023-07-06 11:14:54
  • C语言植物大战数据结构二叉树递归

    2022-02-13 14:12:06
  • c# 进程和线程的区别与联系

    2023-05-04 23:18:36
  • 详解Android Automotive车载应用对驾驶模式Safe Drive Mode的适配

    2022-01-15 07:12:20
  • 新手入门Jvm--jvm概览

    2023-11-09 15:42:31
  • Java利用Swagger2自动生成对外接口的文档

    2023-03-31 03:22:38
  • C#实现基于XML配置MenuStrip菜单的方法

    2023-03-06 21:48:50
  • python如何调用java类

    2022-03-13 16:11:10
  • Android开发之基于DialogFragment创建对话框的方法示例

    2023-10-03 21:17:12
  • asp之家 软件编程 m.aspxhome.com