技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

[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后使用。

相关文章

x
  • 站长推荐
/* 左侧显示文章内容目录 */