
在C#中有 A,B两个窗体,一个C类。在类中一个属性。为什么A窗体赋值后B窗体取不到值A是父窗体,B是子窗体 5
3个回答
展开全部
A中的C和B中的C不是同一个引用
第一种方法:可以把A中的C赋值给B中的C
class A:form
{
C c;
A()
{
c = new C();
....
B b = new B();
b.c=c;
b.Show();
}
}
class B:form
{
public C c{get;set;}
B()
{
}
}
第二种方法:把C声明为静态类
第一种方法:可以把A中的C赋值给B中的C
class A:form
{
C c;
A()
{
c = new C();
....
B b = new B();
b.c=c;
b.Show();
}
}
class B:form
{
public C c{get;set;}
B()
{
}
}
第二种方法:把C声明为静态类
追问
“不是同一个引用怎么理解”是不是指不是同一个实例? 还有设为静态类也不行。只能把它设为静态类跟静态方法才行,单独设静态类好像不行,我测试过了。
追答
不是同一个引用 就是说地址不是指向同一个内存位置,也可以说不是同一个实例。
如果在A中实例化了C,在B中也实例化了C,那么A中的C跟B中的C就是不同的对象(对象有两个)。
如果把A中的C赋值给B中的C,那么A和B中的C都是同一个引用对象(对象只有一个)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询