C#中out和ref之间的区别
1 class Program2 {3 static void Main(string[] args)4 {5 Program pg = new Program();6 int x = 10;7 int y = 20;8 pg.GetValue(ref x, ref y);9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void GetValue(ref int x, ref int y) 16 { 17 x = 521; 18 y = 520; 19 } 20 }
:
代码②:
1 class Program2 {3 static void Main(string[] args)4 {5 Program pg = new Program();6 int x = 10;7 int y = 20;8 pg.GetValue(ref x, ref y);9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void GetValue(ref int x, ref int y) 16 { 17 x = 1000; 18 y = 1; 19 } 20 }
由代码① 和②的运行结果可以看出,在方法中对参数所做的任何更改都将反映在该变量中,而在main函数中对参数的赋值却没有起到作用,这是不是说明不需要进行初始化呢?来看第二点
1 class Program2 {3 static void Main(string[] args)4 {5 Program pg = new Program();6 int x;7 int y; //此处x,y没有进行初始化,则编译不通过。8 pg.GetValue(ref x, ref y);9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void GetValue(ref int x, ref int y) 16 { 17 x = 1000; 18 y = 1; 19 } 20 }
出现的错误为:使用了未赋值的局部变量“x”,“y”。故可以说明ref指定的参数无论在函数定义的时候有没有赋予初值,在使用的时候必须初始化。
1 class Program2 {3 static void Main(string[] args)4 {5 Program pg = new Program();6 int x=10;7 int y=233;8 pg.Swap(out x, out y);9 Console.WriteLine("x={0},y={1}", x, y); 10 11 Console.ReadLine(); 12 13 } 14 15 public void Swap(out int a,out int b) 16 { 17 18 int temp = a; //a,b在函数内部没有赋初值,则出现错误。 19 a = b; 20 b = temp; 21 } 22 23 }
转载于:https://www.cnblogs.com/GISQZC/p/5191922.html
C#中out和ref之间的区别相关推荐
- C#中out和ref之间的区别【转】
首先:两者都是按地址传递的,使用后都将改变原来参数的数值. 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所 ...
- python观察日志(part20)--列表中加号,extend,append之间的区别
学习笔记,仅供参考,有错必纠 列表中"+"加号,extend,append之间的区别 extend extend函数用于在列表末尾一次性追加另一个序列中的多个值. append a ...
- python __import__和import区别_Python中import 与__import__() 之间的区别比较
本篇文章给大家带来的内容是关于Python中import 与__import__() 之间的区别比较,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先来说一下两者的区别: impo ...
- sql server序列_SQL Server中身份和序列之间的区别
sql server序列 In SQL Server, both the SEQUENCE object and IDENTITY property are used to generate a se ...
- Oracle中用户和架构之间的区别?
本文翻译自:Difference between a user and a schema in Oracle? Oracle中的用户和架构有什么区别? #1楼 参考:https://stackoom. ...
- C#中Int64和UInt64之间的区别
Int64:此 Struct用于表示64位带符号整数.所述的Int64 可以两种类型的值,包括所述范围之间的负的和正的存储-9,223,372,036,854,775,808至9,223,372,03 ...
- -ms-flexbox_Flexbox中width和flex-basis之间的区别
-ms-flexbox by Kyle Gallagher 凯尔·加拉格尔(Kyle Gallagher) Flexbox中width和flex-basis之间的区别 (The difference ...
- Jquery中.val()与.value之间的区别
三年多没敲过代码了,今年打算捡起来,是需要多么大的勇气.但是为了实现自我价值,履行自我的承诺,这就是责任.没有什么难不难,晚不晚之说,是我经常对别人说的那样,再晚不过心晚,,一切努力了,实现了每一天的 ...
- c# int uint32_C#中Int32和UInt32之间的区别
c# int uint32 C#Int32和C#UInt32 (C# Int32 and C# UInt32) In C#, Int32 known as a signed integer of 4 ...
- angularjs 中 Factory,Service,Provider 之间的区别
本片文章是使用了 angularjs 中使用 service 在controller 之间 share 对象和数据 的code(http://jsfiddle.net/kn46u0uj/1/) 来进行 ...
最新文章
- 【C++】容器与继承
- UITableViewCell 左侧滑动删除按钮 添加图片 (不完美解决)
- request和response的setCharacterEncoding()方法
- Semi-Supervised Classification with Graph Convolutional Networks
- JSON.stringify()方法
- 面向连接和无连接的套接字到底有什么区别?
- GitHub 的前世今生
- 图片压缩工具optipng/jpegoptim安装
- JavaScript关于json的处理
- 华为周跃峰:揭秘“关于GaussDB数据库的五大谎言”
- c语言利用线程交替打印奇偶数,两个线程交替打印奇偶数
- 嵌入式操作系统内核原理和开发(消息队列)
- 各种小巧的Hello World
- 华为智慧屏鸿蒙系统怎么样,鸿蒙系统初体验,华为智慧屏V65到底值不值得入手?...
- 移动应用框架 Ionic 4 Ionic for Everyone
- 风变Python8编程时,两大思维模式
- ex10_8金融应用:货币单位
- 进击的开发者!第二期SWTC社区开发者大赛拉开序幕
- 移动硬盘使用什么文件系统格式
- 开了店铺没访客没流量?Shopee店铺日常运营引流方式来啦