C#基础加强(7)之ref与out
2024-09-01 02:29:13
介绍
给方法传递普通参数时,值类型传递的是拷贝的对象,而引用类型传递的是对象的引用。它们都不能在函数内部直接修改外部变量的引用(不是修改引用类型的属性),而使用 ref 或 out 关键字就可以实现。
作用
ref:在方法内部修改外部变量的引用。
out:方法内部给外部变量初始化,相当于一个函数多个返回值。
注意事项:
- 使用 ref 修饰参数时,传入的参数必须先被初始化,方法中可以不复制。而对 out 而言,必须在方法中对其完成初始化,在方法外部不用初始化。
- 使用 ref 和 out 时,在执行方法时,参数前都需要加上 ref 或 out 关键字。
- out 适合用在需要 return 多个返回值的地方,而 ref 则用在需要被调用的方法修改调用者的引用时。
示例
例 1:交换两个变量的值:
internal class Program { public static void Main(string[] args) { ; ; Swap(ref i,ref j); Console.WriteLine(i); Console.WriteLine(j); } public static void Swap<T>(ref T obj1, ref T obj2) { object temp = obj1; obj1 = obj2; obj2 = (T) temp; } }
例 2:自己实现 int.TryParse() 方法:
internal class Program { public static void Main(string[] args) { string numStr1 = "abc"; "; int result1; int result2; TryParse(numStr1, out result1); TryParse(numStr2, out result2); Console.WriteLine(result1); // -1 Console.WriteLine(result2); } /** * 将字符串转换成一个 int 类型,以 out 参数 result 返回,如果出现异常,result 值为 -1 */ public static void TryParse(string numStr, out int result) { try { var num = Convert.ToInt32(numStr); result = num; } catch (Exception e) { result = -; } } }
最新文章
- Linux初识
- docker常用命令
- 【翻译自nikic大神】PHP中原生类型的方法
- D3.js 更自由的条形图
- Unity3D和OGRE资源管理机制
- UESTC 1237 质因子分解
- SQL-Server 创建数据库,创建表格
- WebApp远程调试工具
- Qt窗体关闭时,如何自动销毁窗体类对象
- hdu 4643(计算几何)
- __attribute__ ((section(";.text";)))的测试
- JavaScript_数组
- 几个常用道的macro
- VS2010程序打包操作
- Android - 直线(line)画法
- 浅谈游戏中BOSS设计的思路
- Ubuntu16.04安装和配置RabbitMQ
- Swift学习笔记(十四)——字符,常量字符串与变量字符串
- Java第05次实验提纲(Java图形界面编程)
- 20155338课程设计个人报告——基于ARM实验箱的Android交友软件的设计与实现
热门文章
- git remote: HTTP Basic: Access denied Mac 使用Sourcetree 密码输错 再次输入解决方案
- from表单校验插件 validate 实例
- element el-tree 添加图标
- kettle使用文件导入到Postgresql出现如下几种问题的总结
- windows下创建MySQL定时备份与删除脚本
- 第八篇 Flask配置
- Python的numpy库中rand(),randn(),randint(),random_integers()的使用
- pytorch简介
- Java_String
- Django中Q搜索的简单应用