关于C# out与ref参数的使用

原创 2018年04月15日 21:29:05

1.ref:ref  即refence,又叫引用,类似于c++中的&,会将值和变量一起传入方法

2.out:主要用于函数返回多个值,在有out参数方法内,相应的值必须初始化,不然无法通过编译

using System;

namespace Book
{
  
    class Program
    {
        static void Main(string[] args)
        {
            
            int a = 40, b = 5;
            OutFun(out a, out b);
            Console.WriteLine("OutFun : a = {0} , b = {1}", a, b);
            int c = 10, d = 3;
            RefFun(ref c, ref d);
            Console.WriteLine("RefFun : c = {0} , d = {1}", c, d);
            Console.ReadLine();
        }
        static void OutFun(out int a , out int b)
        {
            a = 1; b = 2;
            a = a + b;
            b = 1;
        }
        static void RefFun(ref int a , ref int b)
        {
            a = a + b;
            b = 1;
        }
    }
}

不过这个感觉并没有什么对比性,因为out和ref虽然在编译的时候编译器会把之归为一种类型,但是out更主要的用法应该是在方法内部对变量进行初始化/改变,然后传到调用方法一端,达成一种反向传值(当然只是我个人的见解)

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

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

C# ref 和 out ,params关键字的用法

C# ref,out,params 的用法。
  • mydad353193052
  • mydad353193052
  • 2015-08-29 22:25:38
  • 1022

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

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

C#带ref和out的反射使用

摘自 C# TextBox 扩展方法数据验证  这篇文章推荐阅读 public static TResult GetValue(this TextBox textBox, Actio...
  • tvvbbb
  • tvvbbb
  • 2015-10-20 14:02:28
  • 1665

C#中Out和Ref参数修饰符

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

ref和out的作用和区别

相同点:方法的定义和调用都必须显示使用ref、out关键字。都会导致参数按引用传递。 不同点:传递给ref关键字的参数必须赋初始值,而out不用。out关键字会清空变量,即使变量已经赋值也不行,...
  • fox123871
  • fox123871
  • 2014-08-07 23:51:58
  • 1524

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

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

【Lua】访问C#中的属性和方法-特殊情况-带有out和ref关键字

using System; using LuaInterface; namespace myLua { class MainClass { public string name = "Ocea...
  • sinat_20559947
  • sinat_20559947
  • 2015-08-28 23:46:14
  • 3946

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

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

C#中的ref out param关键字

ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点。使用ref前必须对变量赋值,out不用。ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数...
  • zhanxiangma
  • zhanxiangma
  • 2010-09-06 14:56:00
  • 1077
收藏助手
不良信息举报
您举报文章:关于C# out与ref参数的使用
举报原因:
原因补充:

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