.net框架读书笔记---引用参数(ref/out)
2010-04-27 23:27
148 查看
接上一篇.net框架读书笔记---方法(类型造器)
默认情况下,CLR假设所有的方法参数都是按值传递参数的。当参数为引用类型的对象时,参数的传递是通过传递对象的引用(或)指针来完成的。这意味着方法可以改变引用对象,并且调用代码可以看到这种改变的结果。
对于值类型实例的参数来说,传递给方法的将是值类型实例的一个拷贝。这意味着方法会得到一份属于它自己的值类型实例的成员。而调用方法的代码中的实例不会受到影响。
除了按值传递参数外,CLR还允许我们按引用的方式来传递参数.在C#中可以使用out和ref关键字来做到这一点。out和ref的区别是:
一个方法的参数被标识为out,那么调用代码在调用该方法之前可以不初始化该参数,并且调用方法不能直接读取参数的值,它必须在返回之前为该参数赋值。
一个方法的参数被表示为ref,那么调用代码在调用该方法前必须首先初始化该参数。被调用方法可以任意读取该参数、或者为该参数赋值。
out关键字示例:
代码
修正后编译通过并得到期望值。
默认情况下,CLR假设所有的方法参数都是按值传递参数的。当参数为引用类型的对象时,参数的传递是通过传递对象的引用(或)指针来完成的。这意味着方法可以改变引用对象,并且调用代码可以看到这种改变的结果。
对于值类型实例的参数来说,传递给方法的将是值类型实例的一个拷贝。这意味着方法会得到一份属于它自己的值类型实例的成员。而调用方法的代码中的实例不会受到影响。
除了按值传递参数外,CLR还允许我们按引用的方式来传递参数.在C#中可以使用out和ref关键字来做到这一点。out和ref的区别是:
一个方法的参数被标识为out,那么调用代码在调用该方法之前可以不初始化该参数,并且调用方法不能直接读取参数的值,它必须在返回之前为该参数赋值。
一个方法的参数被表示为ref,那么调用代码在调用该方法前必须首先初始化该参数。被调用方法可以任意读取该参数、或者为该参数赋值。
out关键字示例:
代码
class Program { static void Main(string[] args) { string s1 = "heaiping"; string s2 = "hap"; Swap(ref s1, ref s2); Console.WriteLine(s1); Console.WriteLine(s2); } static public void Swap(ref string a, ref string b) { string c = a; a = b; b = c; } }
修正后编译通过并得到期望值。
相关文章推荐
- (转).net框架读书笔记---引用参数(ref/out)
- C#基础学习--方法参数的种类,值参数,引用参数(ref),输出参数(out),数组参数(params)
- C# 参考之方法参数关键字:params、ref及out 引用-http://www.cnblogs.com/hunts/archive/2007/01/13/619620.html
- 参数传递(续)之——用Ref和Out关键字的按引用传递,以及用Params关键字传参
- c#方法中调用参数的值传递方式和引用传递方式以及ref与out的区别深入解析
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- 深入剖析引用参数Ref和Out
- c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)
- C# 参考之方法参数关键字:params、ref及out 引用之csdn的好友 小常
- 方法参数:值参数、引用参数、输出参数 -- ref out
- ref和out,以及一般方法的引用参数和值参数寻解
- c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)
- C#值类型与引用类型、 out 、 ref、 params 参数、函数重载、数组为函数参数或返回值
- ref和out,以及一般方法的引用参数和值参数寻解
- C#:ref(引用传递参数)和out(输出参数))
- C#引用类型参数加ref或out与不加ref或out的区别
- 输出参数out和引用参数ref区别(代码解释说明)
- 傻瓜教你学习值参数,引用参数(ref)以及输出参数(out)
- c#方法中调用参数的值传递方式和引用传递方式,以及ref与out的区别
- ref引用类型,数组型参数,out输出参数