如何在一个类(class A)所定义的其他类(class B)的对象b1中调用类(class A)的函数和变量?
例:如何编写代码使(class B)的对象b1可以调用(class A)的函数GetAge(),及获得变量strName?
public class A
{
public string strName;
private int nAge;
private B b1 = new B();
public A()
{
}
public int GetAge()
{
return nAge;
}
}
public class B
{
public int c;
public B()
{
}
}
you cant do this,public methods and members of class A can be access only by instance of class A
public class A
{
public string strName;
private int nAge;
private B b1 = new B();
public A()
{
}
public int GetAge()
{
return nAge;
}
}
public class B
{
public int c;
private A objA;
public B(A sender)
{
objA = sender;
//在这里可以用sender调用A的所用公共成员
}
public void f()
{
//在这里可以用objA调用A的所用公共成员
}
}
上面有问题,必须在A里创建B的一个实例。
public class A
{
public string strName;
private int nAge;
private B b1 = new B();
public A()
{
}
public int GetAge()
{
return nAge;
}
private void CreateInstanceOfB()
{
B objB = new B(this);
}
}
先创建A的一个实例,然后调用CreateInstanceOfB方法,创建B的一个实例,B的这个实例就可以访问A的公共成员。
举个实用的例子:
在MDI父窗体里定义一个菜单miOpenChild,给菜单添加事件处理程序:
private void miOpenChild_Click(object sender, System.EventArgs e)
{
MDIChildForm frm = new MDIChildForm(this);
frm.MdiParent = this;
frm.Show();
}
将子窗体的构造函数改为:
public MDIChild (MDIParent sender)
{
//在这里就可以利用sender访问MDIParent的公共成员
}
一个类(class A)所定义的其他类(class B)的对象b1可以调用类(class A)的静态成员(static修饰词)