.Net C# 中可为空值类型 ?

2024-05-27 03:08

本文主要是介绍.Net C# 中可为空值类型 ?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在C# 中的可为空值类型表示除了可以接收原有值类型外还可以接收NULL值

例如:int? a =1; int? b=null;

在使用可为空值类型时可以配合 条件运算符 ??  (没错,就是两个问号!)配合使用。

例如:int? a =1; int b= a ?? 1;

这种方式需要指定为NULL时的默认值。

放一段代码用于演示的更直观;

            //值类型和可为空值类型正常赋值,需要指定为空时的默认值int? a = 111;int b = a ?? 1;Console.WriteLine($"a 等于 {a},b 等于 {b}");int? c = null;int d = c ?? 1;Console.WriteLine($"c 等于 {c},d 等于 {d}");//不指定默认值时,可以使用GetValueOrDefault()获取该值类型默认值int? e = null;int f = e.GetValueOrDefault();Console.WriteLine($"e 等于 {e},f 等于 {f}");

执行结果如下图:

 

在使用逻辑运算符进行运算时也需要注意和基础值类型不一样的地方,如以下代码;

            //在逻辑运算符中需要注意如下场景int? g = 222;int? h = null;int? j = null;Console.WriteLine($"g > h 等于{g > h}");Console.WriteLine($"g < h 等于{g < h}");Console.WriteLine($"g == h 等于{g == h}");Console.WriteLine($"g >= h 等于{g >= h}");Console.WriteLine($"g <= h 等于{g <= h}");Console.WriteLine($"j > h 等于{j > h}");Console.WriteLine($"j < h 等于{j < h}");Console.WriteLine($"j == h 等于{j == h}");Console.WriteLine($"j >= h 等于{j >= h}");Console.WriteLine($"j <= h 等于{j <= h}");

执行结果如下图;

可为空值类型应用场景:

1.在进行非空判断时,只需要一段通用代码即可,而无需再单独为值类型数据进行单独处理。

可为空值类型 使用注意事项:

1.不要调用 GetType() 方法获取类型实例,该操作会导致 装箱操作。获取类型实例请使用 typeof()关键字进行。

2.不要使用 is 运算符 判断 int 或 int? ,is 运算符无法区分。请使用 Nullable.GetUnderlyingType(typeof())方法判断是否是 可为空值类型。

这篇关于.Net C# 中可为空值类型 ?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1006348

相关文章

C#基础之委托详解(Delegate)

《C#基础之委托详解(Delegate)》:本文主要介绍C#基础之委托(Delegate),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 委托定义2. 委托实例化3. 多播委托(Multicast Delegates)4. 委托的用途事件处理回调函数LINQ

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

C#中的 StreamReader/StreamWriter 使用示例详解

《C#中的StreamReader/StreamWriter使用示例详解》在C#开发中,StreamReader和StreamWriter是处理文本文件的核心类,属于System.IO命名空间,本... 目录前言一、什么是 StreamReader 和 StreamWriter?1. 定义2. 特点3. 用

Python如何查看数据的类型

《Python如何查看数据的类型》:本文主要介绍Python如何查看数据的类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python查看数据的类型1. 使用 type()2. 使用 isinstance()3. 检查对象的 __class__ 属性4.

Python容器类型之列表/字典/元组/集合方式

《Python容器类型之列表/字典/元组/集合方式》:本文主要介绍Python容器类型之列表/字典/元组/集合方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1. 列表(List) - 有序可变序列1.1 基本特性1.2 核心操作1.3 应用场景2. 字典(D

如何使用C#串口通讯实现数据的发送和接收

《如何使用C#串口通讯实现数据的发送和接收》本文详细介绍了如何使用C#实现基于串口通讯的数据发送和接收,通过SerialPort类,我们可以轻松实现串口通讯,并结合事件机制实现数据的传递和处理,感兴趣... 目录1. 概述2. 关键技术点2.1 SerialPort类2.2 异步接收数据2.3 数据解析2.

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Python如何在Word中生成多种不同类型的图表

《Python如何在Word中生成多种不同类型的图表》Word文档中插入图表不仅能直观呈现数据,还能提升文档的可读性和专业性,本文将介绍如何使用Python在Word文档中创建和自定义各种图表,需要的... 目录在Word中创建柱形图在Word中创建条形图在Word中创建折线图在Word中创建饼图在Word

SpringBoot接收JSON类型的参数方式

《SpringBoot接收JSON类型的参数方式》:本文主要介绍SpringBoot接收JSON类型的参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、jsON二、代码准备三、Apifox操作总结一、JSON在学习前端技术时,我们有讲到过JSON,而在

C# 委托中 Invoke/BeginInvoke/EndInvoke和DynamicInvoke 方法的区别和联系

《C#委托中Invoke/BeginInvoke/EndInvoke和DynamicInvoke方法的区别和联系》在C#中,委托(Delegate)提供了多种调用方式,包括Invoke、Begi... 目录前言一、 Invoke方法1. 定义2. 特点3. 示例代码二、 BeginInvoke 和 EndI