这两个比较陈述之间有什么区别?

dot*_*oob 4 .net c#

这两个比较法的差异是什么?

var result = EqualityComparer<T>.Default.Equals(@this, null);
var result = @this == null;
Run Code Online (Sandbox Code Playgroud)

显然,目的是测试对象'@this'是否为空.

Jon*_*eet 7

那取决于它的类型@this.如果它没有重载==,第二行将只执行直接引用比较,而第一行将调用重写 Equals方法或实现IEquatable.Equals.

任何明智的实施都会给两个比较带来相同的结果.