最近做一个树,,每一个子节点都有一个事件可以映射到父节点的方法中去..发现了一个不知道是不是问题的问题测试代码如下...
class Program
    {
        static void Main(string[] args)
        {
            test t1 = new test("t1");
            t1.e = t1.t1;
            Console.WriteLine(t1.e());//这里输出 t1  test.t1方法   是正常的            test t2 = new test("t2");
            t2.e = t2.t2;
            Console.WriteLine(t2.e());//这里输出 t2  test.t2方法   也是正常的..            t2 = t1;
            t2.sets("t2");
            Console.WriteLine(t2.e());//这里输出 t2  test.t1方法              //第一个郁闷,这里t2.e()按输出的理解是" 返回的值是实例t2的 ",但方法是t1的
            //那t1的方法怎么可以访问t2的内部变量...不解...
            test2 t11 = new test2("test2");
            t2 = t11.bt1();
            t2.sets("test1");
            Console.WriteLine(t2.e());//这里输出 test2             //第二个郁闷,这里按输出的理解是" 返回的值是实例t11的 ",
            //t2.e()是映射到test2.abc的,但是这个abc是内部的,外部怎么可以访问,所以这里也不解.. 
            //而且这里输出的是 test2 显然是t11实例里面的,这跟上面的 " 返回的值是实例t2的 "简直是牛头对不上马嘴
            Console.ReadLine();
        }
        
    }
    public delegate string teste();
    public class test
    {
        string s = "";
        public test(string s) { this.s = s; }
        public void sets(string s) { this.s = s; }
        public string t1() { return s + "   test.t1方法"; }
        public string t2() { return s + "   test.t2方法"; }
        public teste e;
    }
    public class test2
    {
        private string s ;
        public test2(string s) { this.s = s; }
        public  test bt1()
        {
            test t = new test("t");
            t.e = abc;
            return t;
        }
        private string abc()
        {
            return s;
        }
    }对第三次输出和第四次输出非常不理解..希望哪位大侠能讲解讲解...谢谢.