浅谈C# 中的可空值类型 null
在C#中,null代表一个空引用或不存在的对象。当我们调用一个没有赋值的对象时,就会出现空引用异常。为了避免这种情况,C#提供了可空值类型。
可空值类型
可空值类型是一种用于表示一个值类型可能为null的数据类型。比如它可以声明一个int类型的变量,并赋值为null。在可空值类型中,可以赋值为null的值类型例如 int、float、double、decimal 等。这些类型被称为基元类型。例如 C# 中的 int?
就是一个可空值类型。
声明方式:
int? nullableValue = null; //声明一个int类型的可空值类型
操作可空值类型
对于可空值类型,我们可以使用HasValue和Value属性来操作。
HasValue
: 判断是否有值,如果有值返回true,否则返回false。Value
:获取当前对象的值,如果没有值,那么就会抛出一个InvalidOperationException。
示例代码:
int? nullableValue = null;
if(nullableValue.HasValue)
{
Console.WriteLine("nullableValue的值为:" + nullableValue.Value);
}
else
{
Console.WriteLine("nullableValue没有值");
}
输出:
nullableValue没有值
可空值类型的默认值
当声明一个可空值类型时,如果没有给它赋值,那么它的值就会是null。我们还可以使用Null Coalescing运算符??
来判断可空值类型是否有值,如果有值就返回这个值;如果没有值就返回指定的默认值。
示例代码:
int? nullableValue = null;
int defaultValue = 100;
int result = nullableValue ?? defaultValue;
Console.WriteLine("结果为:" + result); // 输出:结果为:100
总结
通过本文,我们了解了C#中的可空值类型null,可空值类型对于避免空引用异常非常有帮助。使用可空值类型,我们可以判断变量是否有值,并从中获取值,如果没有值,我们还可以给它一个默认值。
示例说明
- 例如一个在线电商网站,用户地址可能存在缺失信息的情况,为了避免空引用异常可以采用可空值类型。
class User
{
public int? AddressId { get; set; } // 地址ID
.
.
.
}
- 假设我们需要为用户设置一个默认地址,在地址信息未输入时使用默认地址,我们可以使用null合并运算符。
class AddressService
{
public Address GetDefaultAddress()
{
return new Address
{
Id = 1,
City = "北京",
District = "海淀区",
Street = "丹棱街道"
};
}
public Address GetUserAddress(User user)
{
return new Address
{
Id = user.AddressId ?? GetDefaultAddress().Id // 如果AddressId为空就返回默认地址的Id
City = user.City ?? GetDefaultAddress().City, // 如果当前用户没有填写城市就使用默认城市
District = user.District ?? GetDefaultAddress().District, // 如果当前用户没有填写区县就使用默认地址
Street = user.Street ?? GetDefaultAddress().Street // 如果当前用户没有填写街道就使用默认地址
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈C# 中的可空值类型 null - Python技术站