|
|
1
76
在我看来,任何人说总是用其中一个或另一个给你的建议都是拙劣的。
实际上,可以调用几种不同的方法来比较对象实例。给定两个对象实例
这些都可以做不同的事情!
注意上面最后一段。。。我们稍后再讨论。
所以,是的,存在使用
实例方法
但是静态版本的呢
简而言之,根据您选择调用的方法,您得到的比较行为可能会有很大的不同。不过,这里有一条评论:微软并没有正式记录微软的内部行为
这个方法使意图非常清楚-您特别希望结果是比较两个引用以获得引用相等。使用类似
“嘿,这太尴尬了,换成:
可能会有所不同。
不过,让我们在这里注入一些实用主义。
没有必要(而且很难看)写:
|
|
|
2
5
|
|
|
3
3
当您要测试标识(内存中的相同位置)时:
但要确保你真的想要身份测试。考虑以下几点:
它回来了
和
两者都返回
如果你期待的是
当您要测试相等性(相同内容)时:
现在,要解决最初的问题:
A:是的。获得100%安全相等性测试的唯一方法是自己对空值进行预测试。 但你应该吗?这个bug将出现在那个(假设的未来坏类)中,它将是一种直接的失败类型。易于调试和修复(由提供类的任何人)。我怀疑这是一个经常发生的问题,或者当它确实发生时会持续很长时间。
更详细的A:
所以呢
|
|
|
4
2
这个
framework guidelines
建议你
因此,假设这些准则在这里适用,选择语义上合理的。如果您处理的是不可变对象,并且您希望这两种方法产生相同的结果,那么我将使用
|
|
|
5
1
关于“…编写代码来处理作者控制之外的对象…”,我要指出
|
|
|
6
0
当我试图比较对象的唯一Id时,我在这里结束了,这些对象本身可能是空的。我们发现先对缺失的数据进行插补,然后再进行比较更容易。
|
|
|
A B · C#Excel自动调整列避免长文本时出错 11 月前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 12 月前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 12 月前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |