我在理解 D 中的数组标识时遇到问题。
Object s = null; // or new Object
auto a = [s];
auto b = [s];
writeln(a is b); // > false
writeln(a == b); // > true
这打印false
,然后true
。我对 没有问题==
,但在D2 ref中指出
对于静态和动态数组,标识定义为引用相同的数组元素和相同数量的元素。
这与我所经历的行为相矛盾。a
并且b
两者都有一个元素 which is s
,所以它们应该是相同的。我误解了什么吗?
编辑:我错误地认为相同的数组元素意味着它们在 D 中比较相等is
,哪种模型的身份比较。