out 参数前必须先为其赋值,即必须由被调用方为其赋值。

class TestOut
{static void FillArray(out int[] arr){// Initialize the array:arr = new int[5] { 1, 2, 3, 4, 5 };}static void Main(){int[] theArray; // Initialization is not required// Pass the array to the callee using out:FillArray(out theArray);// Display the array elements:System.Console.WriteLine("Array elements are:");for (int i = 0; i < theArray.Length; i++){System.Console.Write(theArray[i] + " ");}// Keep the console window open in debug mode.System.Console.WriteLine("Press any key to exit.");System.Console.ReadKey();}
}/* Output:Array elements are:1 2 3 4 5        */

ref 参数必须由调用方明确赋值。因此不需要由接受方明确赋值。

class TestRef
{static void FillArray(ref int[] arr){// Create the array on demand:if (arr == null){arr = new int[10];}// Fill the array:arr[0] = 1111;arr[4] = 5555;}static void Main(){// Initialize the array:int[] theArray = { 1, 2, 3, 4, 5 };// Pass the array using ref:FillArray(ref theArray);// Display the updated array:System.Console.WriteLine("Array elements are:");for (int i = 0; i < theArray.Length; i++){System.Console.Write(theArray[i] + " ");}// Keep the console window open in debug mode.System.Console.WriteLine("Press any key to exit.");System.Console.ReadKey();}
}/* Output:Array elements are:1111 2 3 4 5555*/

区别:

ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。

out

方法参数上的 out 方法参数关键字使方法引用传递到方法的同一个变量。当控制传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。

当希望方法返回多个值时,声明 out 方法非常有用。使用 out 参数的方法仍然可以返回一个值。一个方法可以有一个以上的 out 参数。

若要使用 out 参数,必须将参数作为 out 参数显式传递到方法。out 参数的值不会传递到 out 参数。

不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。

属性不是变量,不能作为 out 参数传递。

ref是    有进有出,而out是       只出不进。

转载于:https://www.cnblogs.com/mchuang/p/5006411.html

C# 中 ref 和out 的区别相关推荐

  1. c#中ref和out的区别

    c#中ref和out的区别: 1,ref必须初始化,out不用初始化. 2,ref参数的值被传递到ref参数,out不能被传递. 注意: 1,属性不是变量,不能作为ref参数传递. 2,ref类似于c ...

  2. c#中ref与out的区别

    转载:http://zhidao.baidu.com/link?url=pxZpqZuOAWgVk9hhUhqduew4XV-zkycL3OeMhGsoe8PeAkCJtSsXeO_v0H55pcHO ...

  3. vue3 - ref和reactive的区别

    文章搬运自wx60d4764eb475e 的vue3中ref和reactive的区别(系列六) 1. ref和reactive区别:     如果在template里使用的是ref类型的数据, 那么V ...

  4. Spring中ref local与ref bean区别

    为什么80%的码农都做不了架构师?>>>    Spring中ref local与ref bean区别 今天在做SSH框架Demo实例时,在ApplicationResources. ...

  5. C#中关键字ref与out的区别(转)

    C#中关键字ref与out的区别(转) 在C#中,ref与out是很特殊的两个关键字.使用它们,可以使参数按照引用来传递. 总的来说,通常我们向方法中传递的是值.方法获得的是这些值的一个拷贝,然后使用 ...

  6. C#中ref和out关键字的应用以及区别。

    C#中ref和out关键字的应用以及区别. ref ref的定义 ref 的使用 out out的定义:来自MSDN out的用法 ref和out的区别 Stack Overflow的解释: 之前要学 ...

  7. ref和out的区别

    ref和out的区别在C# 中,既可以通过值也可以通过引用传递参数.通过引用传递参数允许函数成员更改参数的值,并保持该更改.若要通过引用传递参数, 可使用ref或out关键字.ref和out这两个关键 ...

  8. oracle binary_integer pls_integer,oracle中binaryinteger与plsinteger的区别

    oracle中binaryinteger与plsinteger的区别 Oracle 中 Binary_Integer 与 Pls_Integer 的区别Binary_Integer 与 Pls_Int ...

  9. C#中ref和out的使用小结

    C#中ref和out的使用小结 ref是传递参数的地址,out是返回值,两者有一定的相同之处,不过也有不同点. 使用ref前必须对变量赋值,out不用. out的函数会清空变量,即使变量已经赋值也不行 ...

最新文章

  1. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍
  2. 量子力学——超弦理论、M理论(膜论)
  3. Hybrid框架UI重构之路:一、师其长技以自强
  4. EMNLP 2021-多模态Transformer真的多模态了吗?论多模态Transformer对跨模态的影响
  5. 总奖金100万!2021SEED江苏大数据开发与应用大赛(华录杯)正式开赛!
  6. rust异步之async、await、future
  7. QYResearch回顾:2017年中国汽车语音识别系统产量为1413万
  8. 小木棍 [数据加强版]*
  9. js中的call及apply
  10. vue中引用BScroll监听上拉加载报错
  11. sd卡驱动分析之core
  12. 贪吃蛇源码(C语言版)-学习版
  13. 计算机系统的位的描述性定义,计算机系统中,“位”的描述性定义是________。
  14. 回顾外滩踩踏事件,吸取的教训
  15. PostgreSQL安装之后,打开pgAdmin4后,点击servers下方没有任何内容的情况
  16. 解决:为保证帐号安全,您在这里的注册受到限制。 建议您下载网易官方手机客户端邮箱大师进行注册 原文信息: 解决:为保证帐号安全,您在这里的注册受到限制。 建议您下载网易官方手机客户端邮箱大师进行注册
  17. 视频号功能更新,这些功能久等了
  18. pytorch基础学习(四) 数据处理(一)
  19. WoShop分销积分直播短视频商城全开源无加密商城源码
  20. 【一起学UniGUI】--UniGUI介绍(1)

热门文章

  1. Chapter6_Vocoder
  2. 牛客 Bang! Bang!(动态规划)
  3. LeetCode 794. 有效的井字游戏(分类讨论)
  4. LeetCode 214. 最短回文串(字符串哈希)
  5. LeetCode 1391. 检查网格中是否存在有效路径(BFS)
  6. LeetCode 357. 计算各个位数不同的数字个数(DP)
  7. 传智书城首页设计代码_(自适应手机版)响应式创意餐饮酒店装饰设计类网站织梦模板 html5蓝色餐饮酒店设计网站源码下载...
  8. python po设计模式_Python Selenium设计模式 - PO设计模式
  9. sklearn分类器算法:逻辑回归及案例分析
  10. InfluxDB安装及使用