最近做一个树,,每一个子节点都有一个事件可以映射到父节点的方法中去..发现了一个不知道是不是问题的问题测试代码如下...
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;
}
}对第三次输出和第四次输出非常不理解..希望哪位大侠能讲解讲解...谢谢.
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;
}
}对第三次输出和第四次输出非常不理解..希望哪位大侠能讲解讲解...谢谢.
---------
建议楼主去看看C#引用类型的定义