Jad*_*ias 3 .net c# operators iequatable equals-operator
当我必须实现相等比较器
public class SampleClass
{
public int Prop { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我应该做
null == new SampleClass()
Run Code Online (Sandbox Code Playgroud)
和
new SampleClass() == null
Run Code Online (Sandbox Code Playgroud)
和
new SampleClass().Equals(null)
Run Code Online (Sandbox Code Playgroud)
假?
那怎么样?
new SampleClass() != null
Run Code Online (Sandbox Code Playgroud)
它应该也是假的吗?
更新人们质疑这个问题背后的原因.它应该是!=和==永远是对立的.但是如果我实现这些方法所以所有这些比较都会导致错误,那么将会出现==和!=运算符会产生相同结果的情况.因此,是否应该返回true或false是一个两难的选择.
这甚至是个问题吗?不,null永远不应该等于一个对象.
编辑:因此,通过扩展,new SampleClass() != null应该是true.null不喜欢NaN; 它非常明确.
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |