情形如下class A
{
private int na;
void fooa()
{
B b = new B(na);
}
void fooa1()
{
想调用nb,咋办;
}
}class B
{
private int nb; B(A a)
{
init();
}
} 具体是这样的
formA中有个控件Ca能过构造函数我传到formB中了
但是formB中的有些变量要在formA中的Ca的事件来执行
不知道怎么办了
请大家帮助.
谢谢
{
private int na;
void fooa()
{
B b = new B(na);
}
void fooa1()
{
想调用nb,咋办;
}
}class B
{
private int nb; B(A a)
{
init();
}
} 具体是这样的
formA中有个控件Ca能过构造函数我传到formB中了
但是formB中的有些变量要在formA中的Ca的事件来执行
不知道怎么办了
请大家帮助.
谢谢
public int Nb
{
set
{
nb=value;
}
get
{
return nb;
}
}然后在class A中调用
B b = new B(na);
b.Nb;//调用class A中的变量nb
class A
{
private int na;
private B b;
void fooa()
{
b = new B(na);
}
void fooa1()
{
b.Nb
}
}class B
{ private A a;
private int nb;
Public int Nb
{
get {return nb;}
} B(A a)
{
this.a=a;
init();
}
}
这和现实中你和你朋友相互认识一样的道理,你们
两之间的沟通还需要通过第三方的接口来约束其实没有必要的。当然如果这种依赖关系至关重要时,约定接口以保证在对方被修
改时相互关系不会被修改而破坏是有好处的。楼上的方法是可行的,但代码不够好看,且需要在A中定义一个新的NB对象,这是不太合理的;微软的.net在做MDIParent时,父窗口向子窗口注册时,事实上也同时完成了子窗口向父窗口MDIChildren中的注册。
form.MdiParent = mainForm;根据楼上的想法,将你的示例改成(说实话,用A、B表示类名,我想吐):
internal class A
{
private int na;
private void fooa()
{
} private void fooa1()
{
// 想调用nb,咋办;
int getb = b.Nb;
//上面就是正确的调用
} /// <summary>
/// 增加的代码
/// </summary>
private B b;
public B B
{
get { return b; }
set { b = value; }
}
} internal class B
{
private int nb; private B(A a)
{
Init(); //这里是关键
a.B = this;
} /// <summary>
/// 这里是需要暴露的属性
/// </summary>
public int Nb
{
get { return nb; }
set { nb = value; }
} private void Init()
{
}
}