ref和out的用法说明举例(转)
2015-09-01 17:46
141 查看
1. ref:
int i =0;
有函数fun(ref i)和fun(i)
它们的函数体都是{ i = 3;},那么在执行以下两段代码后:
(1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());
(2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());
(1)的输出是1,(2)的输出是3,
2. out:
int i; //注意,这样个里就是声明了变量i,并木有对其初始化
有函数fun(ref i)、fun(out i)和fun(i)
它们的函数体都是{ i = 3;},那么在执行以下三段代码后:
(1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());
(2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());
(3)int i = 0; fun(out i); System.Console.WriteLine(i.ToString());
(1)和(2)在编译的时候都会报错:不准确 CS0165: 用了未赋值的局部变量“i”
而(3)能正常编译,而且输出3
最后总结一次:
Ref和Out这样个2个关键字都能够提供相似的功效,其作用也很像C中的指针变量。稍有不相同之处是:
用Ref型参数时,传入的参数必须先被初始化。而Out则不要要,对Out而言,就必须在方法中对其完成初始化。
用Ref和Out时都必须注意,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
Out更适合用在要要Return多个返回值的地方,而Ref则用在要要被调出使用的方法修改调出使用者的引用的时候。
int i =0;
有函数fun(ref i)和fun(i)
它们的函数体都是{ i = 3;},那么在执行以下两段代码后:
(1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());
(2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());
(1)的输出是1,(2)的输出是3,
2. out:
int i; //注意,这样个里就是声明了变量i,并木有对其初始化
有函数fun(ref i)、fun(out i)和fun(i)
它们的函数体都是{ i = 3;},那么在执行以下三段代码后:
(1)int i = 0; fun(i); System.Console.WriteLine(i.ToString());
(2)int i = 0; fun(ref i); System.Console.WriteLine(i.ToString());
(3)int i = 0; fun(out i); System.Console.WriteLine(i.ToString());
(1)和(2)在编译的时候都会报错:不准确 CS0165: 用了未赋值的局部变量“i”
而(3)能正常编译,而且输出3
最后总结一次:
Ref和Out这样个2个关键字都能够提供相似的功效,其作用也很像C中的指针变量。稍有不相同之处是:
用Ref型参数时,传入的参数必须先被初始化。而Out则不要要,对Out而言,就必须在方法中对其完成初始化。
用Ref和Out时都必须注意,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。
Out更适合用在要要Return多个返回值的地方,而Ref则用在要要被调出使用的方法修改调出使用者的引用的时候。
相关文章推荐
- ecshop调用后台指定广告位下所有广告循环
- C 截取输出
- 新人开博,自娱自乐一下。
- 从零开始写个编译器吧 - 单词化简述(Tokenization)
- 属性资源与Android命名空间
- node.js中npm安装的模块在哪个目录下
- MD5加密代码
- From Eclipse to intellij idea 14
- android 无法生成R文件的原因
- 怎么进入 BAT 的研发部门?
- 54.OC与js交互
- 求子树中含有苹果的节点个数 时间戳+树状数组 poj 3321
- java.net.UnknownHostException: sms.chinacomservice.net
- 产品经理小技术:图片素材随手找,原型设计快又好
- shell 数组建立及使用技巧
- 53。XCode:duplicate symbol _base64_encode in--引用库重复定义的问题
- Django的安装配置与应用
- iOS_33_音乐播放(后台播放+锁屏歌词)
- nodpad++正则替换
- 【AngularJS】—— 8 自定义指令