Bam*_*oUA 1 object hashcode cloning flutter
我有课
class Controller with EquatableMixin {
final int id;
//... other props
Controller.from(Controller controller) :
id = controller.id,
//... other props assignments
List<Object> props => [
id,
//... other props
];
}
final ctrl1 = Controller(...); // Create ctrl1
final ctrl2 = Controller.from(ctrl1); // Create ctrl2 (actually clonning)
assert(ctrl1.hasCode != ctrl2.hasCode); // triggered!
Run Code Online (Sandbox Code Playgroud)
我期望 和ctrl1是ctrl2具有不同hashCodes 的不同对象,但它们具有相同的hashCode。为什么?我如何确保这ctrl12不是指向 的指针ctrl2?
“哈希码”是一个定义。您决定您的对象具有什么哈希码。不应使用哈希码来确定两个对象是否实际上是同一内存实例。
显然,两个不同的对象可以具有相同的哈希码:
int i = 5;
int x = 5;
Run Code Online (Sandbox Code Playgroud)
它们应该具有相同的哈希码,毕竟它们是相同的值。它仍然是两个不同的变量。
哈希码也没有说明两个对象是否相等。它所做的唯一声明是具有不同哈希码的两个对象不相等。具有相同哈希码的两个对象不相等,直到您检查它们是否相等。他们可能是平等的。哈希码是一种减少必须进行的实际相等性检查次数的方法,而不是确定某些内容是否实际上相等的方法。
| 归档时间: |
|
| 查看次数: |
988 次 |
| 最近记录: |