跳到主要内容

C# 如何使用可空类型?

参考答案:

在C#中,可空类型(Nullable Types)允许您为值类型(如int, float, bool等)分配一个null值。默认情况下,值类型在C#中是不能为null的,但是通过使用可空类型,您可以为它们分配一个null值,这在某些情况下是非常有用的,比如当你想要表示一个值可能不存在或者尚未设置时。

要使用可空类型,您需要在类型后面加上一个问号(?)。例如,int? 表示一个可以为null的整数。

下面是如何在C#中使用可空类型的一些示例:

声明可空类型的变量

int? nullableInt = null; // 声明一个可以为null的整数变量,并初始化为null
bool? nullableBool = true; // 声明一个可以为null的布尔变量,并初始化为true

赋值和检查是否为null

nullableInt = 10; // 为可空整数变量赋值
if (nullableInt.HasValue) // 检查变量是否有一个值(非null)
{
    Console.WriteLine(nullableInt.Value); // 如果HasValue为true,则输出变量的值
}
else
{
    Console.WriteLine("The value is null."); // 如果HasValue为false,则输出变量为null
}

使用可空类型的运算符

int? sum = nullableInt + 5; // 如果nullableInt有值,则计算总和;否则sum也将为null
int? product = nullableInt * nullableInt; // 如果nullableInt有值,则计算乘积;否则product也将为null

值类型和可空类型的转换

int regularInt = nullableInt ?? 0; // 如果nullableInt有值,则将其转换为非可空int;否则使用默认值0
nullableInt = (int?)someRegularInt; // 将非可空int转换为可空int

在集合中使用可空类型

List<int?> nullableIntList = new List<int?>(); // 创建一个可以包含null值的整数列表
nullableIntList.Add(null); // 添加一个null值到列表中
nullableIntList.Add(42); // 添加一个非null值到列表中

在数据库操作中使用可空类型

当您使用如Entity Framework或Dapper等ORM库与数据库交互时,数据库中的NULL值通常会映射到C#中的可空类型。例如,一个可以为NULL的数据库列在C#实体类中通常会表示为可空类型。

请注意,使用可空类型时,您应该始终检查HasValue属性,以确保在尝试访问Value属性之前变量确实包含一个值,否则可能会引发InvalidOperationException异常。此外,使用可空类型进行算术或比较运算时,如果任一操作数为null,则结果也将为null