C#中ref和out之间的区别

作者: Laura McKinney
创建日期: 2 四月 2021
更新日期: 5 可能 2024
Anonim
MS Excel - Cell Reference
视频: MS Excel - Cell Reference

内容


“ Ref”和“ Out”是C#中使用的参数修饰符。使用ref和out,可以将其引用的任何值类型传递给任何方法。通过其引用传递任何值类型的原因引入了ref和out关键字之间的主要区别。的 参考 关键字允许所调用的方法更改使用ref关键字传递给它的参数的内容。的 关键字允许被调用的方法在单个调用中返回多个值。让我们研究一下ref和out之间的区别以及比较表。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础参考
基本的它允许更改以ref关键字开头的参数的值。它允许方法返回以out关键字开头的那些值。
初始化ref参数必须在方法调用之前初始化。在终止之前,必须在调用的方法内部初始化out参数。
宣言在方法声明和方法调用时,将由方法更改的参数声明为ref。在方法声明和方法调用时,必须将要返回的参数声明为ref。

引用关键字的定义

“ ref”是参数修饰符,当需要通过按引用调用来调用方法时使用。当我们希望对调用的方法内部的参数所做的更改必须反映在该变量的原始值中时,则使用ref参数修饰符。在方法声明和方法调用期间,我们要声明为ref的值类型前面带有“ ref”关键字。在调用和声明方法时,可以将多个参数声明为“ ref”。

使用系统;类DemoRef {public void Square(ref int s){s = s * s; }}类Ref_main {static void Main(){DemoRef ob = new DemoRef();整数a = 10; Console.WriteLine(“方法调用前的一个:” + a); ob.Square(ref a); //使用参考关键字Console.WriteLine(“ a调用后:” + a); }} //输出一个before方法调用:10 a after方法调用:100

在上面的代码中,变量“ a”作为参数传递给方法Square(ref a)以及附加到它的参数修饰符ref。这意味着Square(ref a)方法将对变量“ a”内部执行的任何更改将反映在方法外部的“ a”的原始值。


处理参数修饰符“ ref”时,必须记住一些重要点。

  • 引用传递给方法的参数必须在方法调用之前进行初始化。
  • 该方法不得将初始值分配给ref参数。
  • 您还可以将ref与参考变量一起使用。

Out关键字的定义

每次调用方法时,它只会返回一个值。如果希望某个方法在调用时返回多个值,则必须将“ out”关键字与要在终止该方法时返回的参数一起使用。有时,当我们不想将任何内容传递给该方法但希望该方法返回某些内容时,我们会使用带有out关键字的参数。让我们通过一个例子来理解它。

使用系统; class DemoOut {public int Decompose(double x,out double fraction){int whole_num; whole_num =(int)x;分数= x-Whole_num;返回Whole_num; }}类Out_maint {静态void Main(){DemoOut ob = new DemoOut();我双压裂i = ob.Decompose(100.125,out frac); //使用关键字Console.WriteLine(“整数部分为” + i); Console.WriteLine(“分数部分为” + frac); }} //输出整数部分为100小数部分为0.125

在以上代码中,方法Decompose()返回了两个值。一种是通过关键字“ return”(即whole_num)返回,另一种是通过方法调用(即“ frac”)时返回以out关键字开头的参数。

关于out关键字要记住的重要点。

  • 与ref关键字不同,使用out关键字的参数必须在方法调用之前初始化。
  • 被调用的方法本身将使用out关键字为参数分配一个值,因为它在被调用的方法内被认为是未分配的,即假定没有初始值。
  • 被调用方法必须在方法终止之前为out参数分配一个值。
  • out关键字也适用于参考变量。
  1. 当将以ref关键字开头的变量传递给任何方法时,则在方法内部对其进行的更改将反映为其原始值。当传递给方法的变量前面带有out关键字时,该方法无需使用return关键字即可将其返回。
  2. ref参数应在传递给方法之前进行初始化。另一方面,必须在传递给它的方法内部初始化out参数。
  3. 在调用,声明或定义方法时,ref参数显式声明为ref。另一方面,在调用,声明或定义方法时,out参数显式声明为out。

结论:

每当引用将变量传递给方法时,都可以使用ref和out关键字。而使用这两个关键字的原因是不同的,其中ref关键字可用于更改ref关键字之后的参数的值,并传递给被调用的方法,而out关键字用于返回前面的参数的值通过out关键字。