C#中的ref和out关键字
2015-11-05 11:16
441 查看
C#中的数据类型分为值类型和引用类型,他们最典型的差别就是在作为方法的参数方面
**值类型数据作为参数,修改形参时不会影响到实参
而引用类型数据作为参数,修改形参可以影响到实参**
某些情况下,传递的是值类型的数据,却要求把修改的结果带回来,
像引用类型作为参数那样的效果,ref关键词就可以达到这样的效果
ref关键字使实参按引用类型传递,其效果是,当控制权传递回调用方法时,在方法中对形参的任何更改都将反映在该实参中
下面来看一个例子:
要注意的是,要使用ref关键字,方法的定义和调用都必须显式地使用ref关键字(out也是)
下面来演示一下out关键字的使用
大家是不是觉得两种关键字的使用方法很相近,但是你仔细看就会发现
ref的示例中变量val在调用方法前就赋值了,而out却没有,这就是他们的区别:
**传递到ref的参数必须事先初始化,而out则不用(out的参数在传递之前不需要初始化)
ref关键字重在修改参数的数据,而out关键字重在带回执行结果**
**值类型数据作为参数,修改形参时不会影响到实参
而引用类型数据作为参数,修改形参可以影响到实参**
某些情况下,传递的是值类型的数据,却要求把修改的结果带回来,
像引用类型作为参数那样的效果,ref关键词就可以达到这样的效果
ref关键字使实参按引用类型传递,其效果是,当控制权传递回调用方法时,在方法中对形参的任何更改都将反映在该实参中
下面来看一个例子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo { class Program { static void Main(string[] args) { int val = 0; Method(ref val); //执行完上面的方法,变量val的值变为21 Console.WriteLine("val的值为:"+val.ToString()); } static void Method(ref int i) { i = 21; } } }
要注意的是,要使用ref关键字,方法的定义和调用都必须显式地使用ref关键字(out也是)
下面来演示一下out关键字的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Demo { class Program { static void Main(string[] args) { int val; Method(out val); //执行完上面的方法,变量val的值变为21 Console.WriteLine("val的值为:"+val.ToString()); } static void Method(out int i) { i = 21; } } }
大家是不是觉得两种关键字的使用方法很相近,但是你仔细看就会发现
ref的示例中变量val在调用方法前就赋值了,而out却没有,这就是他们的区别:
**传递到ref的参数必须事先初始化,而out则不用(out的参数在传递之前不需要初始化)
ref关键字重在修改参数的数据,而out关键字重在带回执行结果**
相关文章推荐
- C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)
- C#接口作用
- C#的textbox的LostFocus事件重复执行
- 使用C#在CEF中拦截并响应请求
- C#中比较常用的DateTime结构的使用方法
- C#跟踪和调试程序-Debug类使用
- C#影院售票系统毕业设计(2)
- C#影院售票系统毕业设计(1)
- C# 委托简单例子
- C#中的序列化与反序列化
- XPath语法 在C#中使用XPath示例
- C#GridView中RadioButton选中显示不正确问题!
- C# trim split dataGrid
- C#总结项目《影院售票系统》编写总结二
- 第一次C#作业
- C#学习单向链表和接口 IList<T>
- Parallel dev: .NET SynchronizationContext 二三事
- C# DateTime结构的常用方法
- C#学习之路,学习笔记 第八章 8.4重载
- C# 编写短信发送Window服务