Don wrote:
Max Samukha wrote:
// arrays are true reference types
int[new] a = [1, 2, 3];
b = a;
a.length = 22;
assert (a.length == b.length);

This makes perfect sense to me. The rule would be:
If 'x' is T[new], then:
x = y; _always_ copies y into a {length, capacity-specified block}, unless it already is one. x is given a pointer to the start of that block.
x[] = y[]; does a memcpy, regardless of whether y is a T[new] or a T[].

Right. Assignment of a reference type does not copy the values of what is referred to. Only the reference is copied.

I think it would be very strange to have T[] behave like a reference type (which it does now) and T[new] to behave like a value type.

Reply via email to