ref是对于值类型来说的
对于类,本来他就是引用类型的,所以你不需要这样,
在函数中改变作为参数的类中的内容是会改变原来的那个类型

解决方案 »

  1.   

    我说的是类中一个方法的参数,在方法中要传递控件参数,控件参数中用ref.还有,怎样判断一个变量是不是数值型的变量?在VB中是用IsNumeric。在C#中用什么。
      

  2.   

    请问楼上的,下面这段代码又做何解释呢?if(Cache["dvArt"] != null)
    {
    dvArt = (DataView)Cache["dvArt"];
    }
    else
    {
    dvArt = CreateDataSet().Tables[0].DefaultView;
    Cache["dvArt"] = dvArt;
    } RenumberRowsForPaging(ref dvArt);
      

  3.   

    搞错了!!
    引用类型也是可以使用ref,
    如:
    class CPoint
    {
         public int x,y;
    }
    void ChangePoint(ref CPoint p)
    {
         p=new CPoint();
    }
    如果这样调用
    CPoint p=new CPoint();
    p.x=100;
    ChangePoint(p);//重新生成了CPoint对象
    Console.WriteLine(p.x);//输出0;
    是不是数值型:
    yourobj.GetType().IsClass()
    至于楼主的那个函数为什么需要ref??难道你想要生成一个新的Sample.frmReportShow.Cell对象?
    还有Sample.frmReportShow.Cell这是一个属性??如果是一个属性那就肯定不可以通过ref传递,因为ref 一个类的话是传递一个引用的引用,你的那个属性Get的时候是返回一个引用,这个引用是临时的,而你要把这个引用的引用传给一个函数。
    如果你懂得c的话,把上面的“引用”替换成指针可能有助于你的理解
      

  4.   

    Sample.frmReportShow.Cell是什么??
      

  5.   

    这是我程序中的内容,Sample是一个命名空间,frmReportShow是一个界面,而CELL是界面中的一个控件。不是属性。
    因为在别的界面代码中调用此近件才出现上面的代码
      

  6.   

    对于类或结构,放入变量中本身就是地址引用,无需用ref.
      

  7.   

    你要是只是想修改Cell的值可以不用ref
      

  8.   

    我要向CELL中传数据。还有一个贴子,创建窗口句柄时出错。到底是怎么回事。现在这一点过不法,我的程序无法调 试。
      

  9.   

    可用可不用ref的地方,用上是不会出错的.有几个问题你可能还要多说说.
    Sample.frmReportShow.Cell,到底是什么?控件,什么类型的控件. 
    何处调用,如何调用的.看起来好像是在调用非托管代码.如果是的话,参考下面的帮助.
    ms-help://MS.VSCC/MS.MSDNVS.2052/cpguide/html/cpconcopyingpinning.htm用"封送处理"在索引中找,也可以找到一些帮助.如果可能,贴一段代码出来,这样有助于解决问题.
      

  10.   

    CELL是用友公司用来做报表的控件。在显示报表时用,在类中写一些方法向CELL中填数据。时用到的。代码很多,没有办法贴出来。