各位前辈好!晚辈没有系统的学过C#,对其一些机制只有一个了解.目前拿C#做东西,遇到这样一个问题.问题描述,如何用C#完成下面等价的C++代码的功能//C++ code
class A
{
private:
    int a;
    B* pb;
public:
    A( int x , B* p )
    {
       a=x;
       pb = p;
    }    void f1()
  {
      cout << a + pb->f2();
  }   
}class B
{
private:
    int result;
public:    B( int a )
   {
       result = a;
   }    int f2()
  {
        return result;
    }
}void main()
{
    B b(3);
    A a( 2 , &b );
    a.f1();
}//end以上代码可能有潜在的内存泄露的问题,没有调试,只想说明问题.
我的问题在于不知道,在C#里如何实现class A中的 *pb;现在需要用 *pb 来调用不同 class B 产生的对象的成员函数.当然初始话的时候会把B对象的指针传给A.pb的请各位前辈指点!谢谢先!

解决方案 »

  1.   

    在C#中用class定义的类型为引用类型,因此给它赋值相当于对象的引用(除重载赋值操作符以外)因此你直接在A中,如下定义即可
    private B pb;
      

  2.   

    同意楼上,直接写即可
    class A
    {
    private B pb;public  A( int x , B p )
    {
    pb=p;
    }
    }
      

  3.   

    意思是说C# 中定义的class 类型!
    只是一个名字!
    构造他们的时候并不分配内存,而是要通过new来创建?!对吧!
    那传传递对象的时候
    应该
    public void A( int x , B p )呢
    还是
    public void A( int x , ref B p )
      

  4.   

    应该是: public void A( int x, B p ),引用已经相当于一级指针了。