c# ref与out的区别
2016-01-19 21:21
435 查看
相同点:都是输出参数
不同点:
ref:
1、必须初始化,即:必须赋初始值;
2.有进有出;
3、用在需要被调用的方法修改调用者的引用的时候。
4、是传递参数的地址
out:
1.不需要初始化,即:不需要赋初始值;
2、只出不进;
3、用在需要retrun多个返回值的地方;
4、返回值;
通过代码更直观的看出它们的区别:
不同点:
ref:
1、必须初始化,即:必须赋初始值;
2.有进有出;
3、用在需要被调用的方法修改调用者的引用的时候。
4、是传递参数的地址
out:
1.不需要初始化,即:不需要赋初始值;
2、只出不进;
3、用在需要retrun多个返回值的地方;
4、返回值;
通过代码更直观的看出它们的区别:
class Program { static void Main(string[] args) { //num1,num2,必须赋值 int num1 = 10; int num2 = 5; Exchage(ref num1,ref num2);//调用方法,必须在变量前,必须加ref关键字 } /// <summary> /// 使用ref方法,参数必须加ref关键字 /// </summary> /// <param name="num1"></param> /// <param name="num2"></param> private static void Exchage(ref int num1,ref int num2) { //交换前 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2); int temp = num1; num1 = num2; num2 = temp; //交换后 Console.WriteLine("num1的值:{0};num2的值:{1}", num1, num2); Console.ReadKey(); }
class Program { static void Main(string[] args) { int sum;//不需赋值,即使赋值,也会被覆盖 NumSum(10,5,out sum); Console.Write(sum); Console.ReadKey(); } /// <summary> /// 求和 /// </summary> /// <param name="num1"></param> /// <param name="num2"></param> /// <param name="sum"></param> private static void NumSum(int num1,int num2,out int sum) { sum = num1 + num2; } }
相关文章推荐
- 浅谈Tuple之C#4.0新特性
- 异步打开一个文件进行读取
- 浅谈Tuple之C#4.0新特性那些事儿你还记得多少?
- C#高级编程三十天----泛型结构,泛型方法,泛型托付
- 饿汉式单例与懒汉式单例的C#实现
- 跟siki老师学C#第五天
- C#之数组
- C#中常用的几种读取XML文件的方法
- C#静态构造函数和非静态构造函数
- C# 判断字符串为空的4种方法及效率
- RabbitMQ C# driver stops receiving messages
- C# 基础数据与Byte
- C#析构函数与垃圾回收
- C# 拖拽按钮移动
- C#如何加载程序运行目录外的程序集
- C# 反射研究
- C#中两个窗体将相互跳转
- c#中Show和ShowDialog的区别
- C#中堆和栈的区别分析
- c#动态生成word,在本地可以执行,但发布到iis上出错解决方案