本文主要介绍了C#中可空类型的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
一、什么是可空类型
可空类型允许我们创建一个值类型变量并且可以标记为有效或无效,这样我们就可以有效地将值类型设置为null。可空类型总是基于另外一个叫做基础类型的已经被声明的类型。
可以从任何值类型创建可空类型。不能从引用类型或其他可空类型创建可空类型。不能在代码中显示声明可空类型,只能声明可空类型的变量。编译器会使用泛型隐式地创建可空类型。
举例:声明一个可空int类型的变量
产生的可空类型如下:
必须确保使用可空类型时,该可空变量不是null
可空类型和相应的非可空类型可以轻松转换:
二、为可空类型赋值
可以将以下三种类型的值赋给可空变量:
基础类型的值同一可空类型的值null
三、使用空接合运算符
- 空接合运算符允许我们在可空类型变量为null时返回一个值给表达式。(可空类型也可以使用标准运算符和比较运算符)
- 空接合运算符由两个连续的问号组成。
- 第一个操作数是可空类型的变量。
- 第二个操作数是基础类型的不可空值。
- 在运行时,如果第一个操作数运算后为null,将返回第二个操作数作为结果。
static void Main(string[] args)
{
int? myInt = null;
Console.WriteLine("myInt:{0}", myInt ?? -1);
myInt = 6;
Console.WriteLine("myInt:{0}", myInt ?? -1);
}
四、使用可空用户自定义类型
1. 创建用户自定义值类型
struct MyStruct //声明结构
{
public int X;
public int Y;
public MyStruct(int x, int y)
{
X = x;
Y = y;
}
}
2.将值类型转换为可空类型
static void Main(string[] args)
{
MyStruct? ms = new MyStruct(6,7);//方式1,使用?
MyStruct myStruct = new MyStruct(6,7);
Nullable<MyStruct> ms3 = new Nullable<MyStruct>(myStruct);//使用Nullable创建的可空类型
}
3.使用自定义值类型转换后的可空类型,可空类型其数据只能通过Value来访问。
struct MyStruct //声明结构
{
public int X;
public int Y;
public MyStruct(int x, int y)
{
X = x;
Y = y;
}
}
internal class Program
{
static void Main(string[] args)
{
MyStruct ms1 = new MyStruct(6,7);//值类型
MyStruct? ms2 = new MyStruct(6,7);//使用?创建的可空类型
MyStruct myStruct = new MyStruct(6,7);
Nullable<MyStruct> ms3 = new Nullable<MyStruct>(myStruct);//使用Nullable创建的可空类型
Console.WriteLine("X={0},Y={1}", ms1.X, ms1.Y);
Console.WriteLine("X={0},Y={1}", ms2.Value.X, ms2.Value.Y);
Console.WriteLine("X={0},Y={1}", ms3.Value.X, ms3.Value.Y);
}
}、
到此这篇关于C#中可空类型的使用的文章就介绍到这了,更多相关C# 可空类型内容请搜索织梦云以前的文章希望大家以后多多支持织梦云!
织梦狗教程
本文标题为:C#中可空类型的使用


基础教程推荐
猜你喜欢
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- C# 解析XML和反序列化的示例 2023-04-14
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#中的Linq to JSON操作详解 2023-06-08
- Unity shader实现高斯模糊效果 2023-01-16