C#中Ref参数使用之我见

原创 2005年09月23日 13:26:00

  市面上的书中有关REF参数的说明一般是这样的:
  ref 在使用过程中会改变变量的值,且例子如下:
  public static void ValueParam(string str)
  {
   str = "251";
  }
  public static void RefParam(ref string str)
  {
   str = "250";
  }
  public static void Main()
  {
   string str = "249";
   ValueParam(str);
   Console.WriteLine(" Value Param:"+str);
    RefParam(ref str);
   Console.WriteLine(" Ref Param:"+str);
}
结果为:
Value Param:249
Ref Param:250

但我在实践中发现: 数组参数在不用REF修饰下值也会改变的,看下面这个例子:
  public void ChageValue(int[] arr)
  {
      for(int i =0;i<arr.Length;i++)
         arr[i]=0;
  }
  public static void Main()
  {
   int [] aar = {3,4,5,7,2,6,1};
   for(int i=0;i<aar.Length;i++)
       Console.WriteLine(">>>"+aar[i].ToString());
   ChageValue(aar);  // 这里没有使用REF 参数.
   for(int i=0;i<aar.Length;i++)
       Console.WriteLine("<<<"+aar[i].ToString());
}
从结果中可以看出,数组本身已经改变了,因此不仅仅用REF的形式可以改变参数的值,而这种情况在一般书中都没有介绍,希望新的关于介绍C#的书将上面的情况加以说明。
谢谢。

C#中为何要使用ref参数 (个人理解)

前言 这篇文章并不是想说明,ref的使用或者和out参数的区别等等 而是对C#为什么要放入ref参数给出一些我的个人理解 我也是初学C#,查阅了一些资料给出的个人理解,如果哪里有问题,也欢迎大家不吝赐...
  • luke2834
  • luke2834
  • 2016年01月21日 19:51
  • 958

C#中Ref参数使用之我见

市面上的书中有关REF参数的说明一般是这样的:ref 在使用过程中会改变变量的值,且例子如下:  public static void ValueParam(string str)  {   str...
  • jiaao
  • jiaao
  • 2008年05月14日 16:19
  • 501

C#中Out和Ref参数修饰符

在编程过程中对于函数之间的参数的传递一般分为两种:传值和传地址。下面为大家分析一下。  传值     比如你又一份文档,如果采用传值的话,相当于我复制了一份,因此我对我这份文档的修改都不会影响...
  • ZHOUCHAOQIANG
  • ZHOUCHAOQIANG
  • 2014年10月02日 14:31
  • 2905

C#中ref和out参数使用时需要注意的问题

C#方法中的ref和out      ref        通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用这些拷贝,当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响...
  • zzp_403184692
  • zzp_403184692
  • 2012年10月20日 10:10
  • 1587

C# Error CS1628: 不能在匿名方法、lambda 表达式或查询表达式中使用 ref 或 out 参数

写c#windows窗体应用的时候, 在一个函数里传递了ref的参数, 并且在这个函数里调用了窗体的invoke方法,结果出了cs1628的错误。去Stack Overflow上找了一篇解释,特翻译在...
  • u010511984
  • u010511984
  • 2017年02月28日 16:42
  • 1189

C#中方法参数 ref 与 out 的区别

方法中参数的类型有三种 in型参数 in型参数通过值传递的方式将数值传入方法中。即我们在Java中常见的方法 ref型参数 该种类型的参数传递变量地址给方法(引用传递),传递前变量必须初始化。 ...
  • jl1134069094
  • jl1134069094
  • 2016年01月13日 17:25
  • 1021

C#中in,out,ref的作用和区别

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键...
  • jadeflute
  • jadeflute
  • 2010年01月20日 22:13
  • 23295

利用反射调用方法时,处理ref,out参数需要注意的问题

项目中如下的泛型方法,因为要在运行时,动态指定类型参数,所以要利用反射来实现。 public static TR Deserialize(byte[] source, ref int offset)...
  • shihuaicheng
  • shihuaicheng
  • 2015年03月18日 12:31
  • 955

c#学习体会:使用 ref 和 out 传递数组(downmoon)

c#学习体会:使用 ref 和 out 传递数组(downmoon),希望与大家分享1、与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由接受方为其赋值。例如: pu...
  • downmoon
  • downmoon
  • 2005年11月14日 17:25
  • 13396

C# 参数关键字ref

ref 关键字使方法按引用传递,其效果是,当控制权传递给调用方法时,在方法中对参数所做的任何修改都会反映在改变量中。 示例如下: int i = 10; // 查看调用方法之前的值 Cons...
  • david_520042
  • david_520042
  • 2013年01月29日 13:43
  • 1165
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#中Ref参数使用之我见
举报原因:
原因补充:

(最多只允许输入30个字)