c中的a.Equals(b)和Equals(对象a,对象b)之间有什么不同

Sar*_*edi 0 version c#-4.0

请解释一下这两个声明之间的区别.

第一个语句抛出异常,第二个返回布尔值

Version a = null;

if(a.Equals(null)) // throw the exception

if(Equals(a,null)) // return the bool value true
Run Code Online (Sandbox Code Playgroud)

Raf*_*mal 6

你不能在没有用对象a.Equals初始化的情况下调用a,否则它会抛出NullReferenceExcption,但是它Equals是一个静态方法,它检查传递给它的两个引用是否相同,这些引用可以有空值.

  • 意味着如果对象a为null,即使初始化我们也不能使用a.Equals()正确. (2认同)