现在要提供一些接口,   Uint16 t = 0;
   Out(t);我想将基本类型,如 bool , char, byte, sbyte, int16, 32,64..等基本的值类型全都都要按照引用传递,就像C++中函数
声明void Out(int16 &p); 调用的时候用  Out(t)就ok了。。C#里面我知道可以用ref关键字,声明的时候加上 ref 如 
  void Out( ref int t);
  但是他有个缺陷,就是在调用的是时候也要显示的加上ref关键字, 这点很不好,我给别人提供接口,别人用起来很不方法,还是随时判断类型加上ref关键字,有没有更好的办法?谢谢!

解决方案 »

  1.   


    使用泛型接口方法
    voud test<T>(ref T t){}
      

  2.   

    把结构封装为类
    否则,只能 ref。
    这样为了让防止随便  引用变量, 变量的内容不知觉的被函数变掉,导致开发不易。class A{
      public int Value;
    }
    void Ac(A a){
    a.Value = 2; 
    }A f = new A();
    f.Value = 1;
    Ac(f)  ;
      

  3.   

    为什么微软这么设计,我也觉得挺多余的,vb.net中就不用这么写,c#强行要求写ref。至于原因,期待sp1234、蒋晟老大们来解释了。
      

  4.   


    这是个优点,而不是缺点。
    它明确的告诉程序员该调用按引用传递,参数的内容有可能被改变。C++的语法反而带有歧义,不利于静态分析,比如:
      Out(p); 
    该调用有没有被改变p的副作用?答案是不清楚,还得回头看函数的原形是Out(int)还是Out(int&)。
      

  5.   

    我后来用out了..所有都统一为格式
    Out(out var);var 是输出变量,要被改变!