Jacob Carlborg Wrote: > On 4/3/10 07:03, strtr wrote: > > What I probably mean to ask is : > > In the code below, for what kind of i1 and i2 would the output be like this > > : > > --------- > > Same Value. > > 3 : 5B536C 59D020 > > 3 : 59CE0C 59CEF0 > > 5 : 5B536C 59D020 > > 5 : 59CE0C 59CEF0 > > --------- > > if( i1 !is null&& i2 !is null&& i2.value == i1.value ) { > > writefln("Same Value."); > > if( i2 is i1 ) writefln("Same Object."); > > writefln( i2.toString()," : ",i2.__vptr," ",i2.__monitor); > > writefln( i1.toString(), " : ", i1.__vptr," ",i1.__monitor); > > i1.value = 5; > > writefln( i2.toString()," : ",i2.__vptr," ",i2.__monitor); > > writefln( i1.toString(), " : ", i1.__vptr," ",i1.__monitor); > > } > > > > > > I would guess: > > i1 = new I; > i2 = new I; > > They are two different instance of "I" but containing the same value. > When comparing two objects using "is", the addresses are compared and > not the data in the object, i.e. instance variables.
Wouldn't that simply result in the following? 3 : 5B536C 59D020 3 : 59CE0C 59CEF0 5 : 5B536C 59D020 3 : 59CE0C 59CEF0