Obj is null vs object.ReferenceEquals(Obj, null) Obj是null vs object.ReferenceEquals(Obj, null)

17 浏览
0 Comments

Obj is null vs object.ReferenceEquals(Obj, null) Obj是null vs object.ReferenceEquals(Obj, null)

if (Obj is null) Console.WriteLine("Value is null");

if (object.ReferenceEquals(Obj, null)) Console.WriteLine("Value is null");

的区别是什么?我正在尝试重写==运算符,因此无法使用Obj == null

0
0 Comments

在C#编程中,我们经常需要检查一个对象是否为null。在这种情况下,有两种常用的方法可以使用:object.ReferenceEquals(Obj, null)和(obj is null)。这两种方法其实是完全等价的,都可以用来判断一个对象是否为null。

然而,有一点需要注意的是,(obj is null)这种语法只在C# 7.0版本及以后的语法中才可用。如果你的项目使用的是较旧版本的C#,那么你只能使用object.ReferenceEquals(Obj, null)这种方式来判断一个对象是否为null。

这个问题在C#社区中引起了一些争议。有人认为(obj is null)这种语法更加直观和易读,而且能够提高代码的可读性。而另一些人则认为object.ReferenceEquals(Obj, null)更加明确和规范,因为它明确地使用了一个静态方法来进行判断。

无论你选择使用哪种方式,它们的功能都是一样的,都可以用来判断一个对象是否为null。选择哪种方式完全取决于你的个人偏好和项目的需求。

总结起来,(obj is null)和object.ReferenceEquals(Obj, null)这两种方式都可以用来判断一个对象是否为null。前者是C# 7.0及以后版本的语法,而后者是在较旧版本的C#中可用的方式。选择使用哪种方式完全取决于个人偏好和项目需求。

0