[C#技巧]C#进行空(null)检查的正确方法:用is代替==
作者:admin 时间:2023-5-6 12:51:2 浏览:我们在代码中经常执行 null
检查,以防止NullReferenceException
,我们最常见的方法是:
var product = GetProduct();
if (product == null)
{
// Do something if the object is null.
}
你知道这种方法有什么问题吗?==
运算符可以被覆盖,并且不能严格保证将对象与null
进行比较,会产生我们期望的结果。
C# 版本 7
C# 版本 7 中引入了一个新的运算符,即is
运算符。
以下是我们如何使用is
运算符执行空检查:
var product = GetProduct();
if (product is null)
{
// Do something if the object is null.
}
is
运算符将始终评估指定的对象实例是否为null
。它也是一种更简洁的空检查编写方式,因为它读起来像一个句子。
C# 版本 9
从 C# 9 开始,你可以使用否定模式进行空检查:
var product = GetProduct();
if (product is not null)
{
// Do something if the object is not null.
}
C# 版本 11
从 C# 11 开始,你可以使用列表模式来匹配列表或数组的元素。以下代码检查数组中预期位置的整数值:
int[] empty = { };
int[] one = { 1 };
int[] odd = { 1, 3, 5 };
int[] even = { 2, 4, 6 };
int[] fib = { 1, 1, 2, 3, 5 };
Console.WriteLine(odd is [1, _, 2, ..]); // false
Console.WriteLine(fib is [1, _, 2, ..]); // true
Console.WriteLine(fib is [_, 1, 2, 3, ..]); // true
Console.WriteLine(fib is [.., 1, 2, 3, _ ]); // true
Console.WriteLine(even is [2, _, 6]); // true
Console.WriteLine(even is [2, .., 6]); // true
Console.WriteLine(odd is [.., 3, 5]); // true
Console.WriteLine(even is [.., 3, 5]); // false
Console.WriteLine(fib is [.., 3, 5]); // true
总结
本文介绍了C#进行空(null)检查的正确方法:用is
代替==
,不过在使用之前,要先考虑自己使用的C#版本,因为is
运算符只能在C# 7后使用。
相关文章
- [C#技巧]C#数组矩阵for迭代,顺序不同竟然速度相差15倍
- [C#技巧]C#返回空集合的正确方法是使用Array.Empty而不是null
- [C#技巧]C#异常when过滤器捕捉异常使用多个catch的示例代码
- [C#技巧]C#重新抛出异常的正确方法,注意不是throw e!
- [C#技巧]从C#到C# 8、C# 9,简化switch语句越来越惊艳
- [C#技巧]使用using块比没有using块语句消耗更少的内存
- [C#技巧]使用StringBuilder比String消耗内存少
- [C#技巧]new运算符使代码执行速度慢了5倍
- [C#技巧]在for循环外比在for循环内使用try-catch速度快
- 11个提高C#代码性能的技巧
- OutputCache缓存优化asp.net代码 提高网页性能
相关文章
x
- 站长推荐