you can't do this,public methods and members of class A can be access only by instance of class A

解决方案 »

  1.   

    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的所用公共成员 
        }}
      

  2.   

    上面有问题,必须在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的公共成员。
      

  3.   

    举个实用的例子:在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的公共成员
    }
      

  4.   

    一个类(class A)所定义的其他类(class B)的对象b1可以调用类(class A)的静态成员(static修饰词)