排名
17
文章
40
粉丝
16
评论
21
Linq or Sql 取树末级节点
剑轩 : 这个方法是真的帅!
Python实例 2-12306抢票(二) 下单
18335584353 :
哥。我也是总返回url":"/leftTicket/init","...
Python实例 2-12306抢票(一) 登陆
瑾语 : 第三次评论
Visual Studio小技巧
剑轩 : [斜眼笑][斜眼笑]开会完了认真看了一遍
C#网络流读取(图片)
风清月 : 把一个图片放到字节数组里边[发呆](`・ω・´)
C#与Java二进制编码转换,补码
风清月 : 我勒个擦.....有时间这种问题很坑很难发现哇o(╥﹏╥)o
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

说说自己对out、ref的认识,面试问到的几率很高哟。
out:
- class Program
- {
- /*
- * out、ref都是引用传递,传递后使用都会改变原有的值
- * out是只出不进。ref是有进有出,
- *
- * out用法,一般用于需要返回多个参数时,如在需要返回分页的数据时 同时返回总条数或者TryParse()会用到
- * ref用法,一般用于在改变一个参数时,把他的改变反应到变量中 如在递归中
- *
- */
- #region Out
- static void Main(string[] args)
- {
- Program p = new Program();
-
- //out传递参数时不用赋值(如果赋值也会被清空)
- string out_s;
- p.out_func(out out_s);
- Console.WriteLine(out_s);
-
-
- Console.ReadLine();//暂停窗口
- }
-
- /// <summary>
- /// out传入后需要赋值才能返回
- /// </summary>
- /// <param name="i"></param>
- public void out_func(out string s)
- {
- s = "out参数已赋值,返回。";
- }
- #endregion
- }
输出:
ref:
- class Program
- {
- #region ref
- static void Main(string[] args)
- {
- Program p = new Program();
-
- //ref传递时如果未初始化赋值 则会报错 :使用了未赋值的局部变量“ref_s”
- string ref_s = "已初始化。";
- p.ref_func(ref ref_s);
- Console.WriteLine("返回的ref参数:" + ref_s);
-
-
- Console.ReadLine();//暂停窗口
- }
-
- /// <summary>
- /// ref传入前需要赋值,传入后可不做操作返回原值
- /// </summary>
- /// <param name="s"></param>
- public void ref_func(ref string s)
- {
- Console.WriteLine("传入的ref参数:" + s);
- s += "已赋值返回。";
- }
-
- #endregion
- }
输出:
总结:
out、ref都是引用传递 (传递后改变传递的值会影响原来的值)
out不需要初始化 需要在传入的方法内部完成初始化赋值 ref必须初始化赋值
out用于获取函数内部的值 ref可同时改变函数内和函数外的值
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价