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

时间:2012-04-30 14:41:28

标签: c#-4.0 version

请解释一下这两个陈述之间的区别。

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

Version a = null;

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

if(Equals(a,null)) // return the bool value true

2 个答案:

答案 0 :(得分:6)

如果没有使用对象初始化a.Equals,则无法调用a,否则会抛出NullReferenceExcption,但Equals是静态方法,它会检查两个引用是否通过如果它们相同或不相同,这些引用可以具有空值。

答案 1 :(得分:2)

a.Equals是一种实例方法 - 如果anull,它会抛出NullReferenceExcption,因为您在a上调用的方法是null 1}}。

另一个EqualsObject上的静态方法 - 它不会抛出。如果传入的两个对象都是null,则返回true