delegate reference
Daniel Keep
daniel.keep.lists at gmail.com
Wed Sep 9 08:38:07 PDT 2009
Saaa wrote:
> "Daniel Keep" <daniel.keep.lists at gmail.com> wrote in message
> news:h88cck$1orc$1 at digitalmars.com...
>>
>> Saaa wrote:
>>> abstract class C
>>> {
>>> int method();
>>> }
>>> class C2:C
>>> {
>>> int method() return 2;
>>> }
>>> class C3:C
>>> {
>>> int method() return 3;
>>> }
>>> int delegate() deleg;
>>> void main()
>>> {
>>> C c;
>>> C2 c2 = new C2;
>>> C3 c3 = new C3;
>>> c=c2;
>>> deleg = &c.method;
>>> writefln(deleg()); // 2
>>> c=c3;
>>> writefln(deleg()); // 2
>>> // I expected this to write 3, why is this not so?
>> Because you didn't reassign deleg.
> but isn't deleg pointing to c's method?
Yes... just because you change what c points to doesn't magically
rewrite all other references.
You might want to read http://digitalmars.com/d/1.0/type.html#delegates
More information about the Digitalmars-d-learn
mailing list