用C#写了一个类,希望它的一个类成员变量是外部变量的引用,请问怎样实现呢?引用的外部变量只能作为构造函数的参数输入
刚学C#,希望给个简单的例子。

解决方案 »

  1.   

    class A
    {
       public A()
       {
           B b = new B(new X());
       }
    }class B
    {
        private X bx = null;// bx 私有成员,X 类的对象
        public B(X x)//x 外部传参 变量
        {
            this.bx = x;
        }
    }class X
    {
    }这意思吗?
      

  2.   

    上楼我没看懂。这样吧
    class sample {
        private int temp;
        public sample (ref int variable){
        //这里怎么写实现 temp 改变 variable 跟着改变
        }
    }//这里有个函数
    int va;
    sample sa = new sample( ref int va); //类里面改变后,va变量跟着变化
      

  3.   

    没看懂你要做什么,看你的注释:
    //这里怎么写实现 temp 改变 variable 跟着改变
    variable = temp;我的理解:
    =============class sample {
        private int temp;
        public sample (ref int variable){
            variable = 22;// 3.这里等于 22 ,那变量 va 这时也等于22
        }
    }// 1.这里 va = 33
    int va = 33;
    // 2.调用 sample 构造函数
    sample sa = new sample( ref int va); 
      

  4.   

    上楼的理解是对的。还有个问题是,能不能在成员函数里(不是构造函数)改变外部变量的值?class sample {
      private int temp;
      public sample (ref int variable){
      variable = 22;// 3.这里等于 22 ,那变量 va 这时也等于22
      }
      public void change (){
      //这里怎么写才能改变变量 va 的值?这个函数不能有参数
      }}// 1.这里 va = 33
    int va = 33;
    // 2.调用 sample 构造函数
    sample sa = new sample( ref int va);  
      

  5.   

    具体怎样做?如果C++的话,可以设置引用变量,C#怎么做?C#的引用调用似乎和C++不同
      

  6.   

    这个你看下ref out就明白怎么做到了。类成员不是引用类型 也是可以改变的,不用引用调用的前提下
      

  7.   

    class B
    {
        //..
        public int va = 10;
        //..
    }//int va 是 B 类的变量,你想 va 被外部类访问,那要么就把 va 设置为 public 
    class sample 
    {
      private int temp;
      public sample (ref int variable)
      {
          public void change ()
          {
             B b = new B();
             b.va = 30;
          }
      }
    }//要么就把 va 设置为属性访问。
    class B
    {
        int va = 10;
        public int Va{
            get{return va;}
            set{va = value;}
        }
    }class sample 
    {
      private int temp;
      public sample (ref int variable)
      {
          public void change ()
          {
             B b = new B();
             b.Va = 30;
          }
      }
    }// 要么就反射去设置 va 。
    class B
    {
        int va = 10;
    }class sample 
    {
      private int temp;
      public sample (ref int variable)
      {
          public void change ()
          {
             B b = new B();
             Type t = typeof(B);
             BindingFlags bf = BindingFlags.NonPublic | BindingFlags.Instance;
             FieldInfo mi = t.GetField("va",bf);
             mi.SetValue(b,30);// 设置 b 对象的 va 字段
          }
      }
    }
                为什么一个变量要私有,又要在外部去设置它哦?