C#关于ref的用法(多个实参值的传递)
2013-10-25 10:09
288 查看
按照C#默认的按值调用参数的传递机制,不能刻编写出一个方法来实现两个int类型的值交换,因为一个方法只能对应一个返回值,如何实现将两个交换的值传递回去,这里我将用到的是ref修饰符。
使用ref的单值传递(没有返回值,但是直接将实参的值做了修改,如果是两个int型做值交换,ref也将直接对其实参进行修改为值交换后的值)
ps:这里说的有些不对,但是大体思路是这个样子,看例子自己领悟吧。就是在方法中直接对原本传进来的值进行修改。不需要return
常规单值传递(不适用ref):
使用ref的单值传递(没有返回值,但是直接将实参的值做了修改,如果是两个int型做值交换,ref也将直接对其实参进行修改为值交换后的值)
ps:这里说的有些不对,但是大体思路是这个样子,看例子自己领悟吧。就是在方法中直接对原本传进来的值进行修改。不需要return
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace cxx { class RefTest { public void sqr( ref int i) //注意ref实在所有参数类型的最前面 { i = i * i; } } class refDemo { static void Main() { RefTest ob = new RefTest(); int a = 10; Console.WriteLine("a before call:" + a); ob.sqr(ref a); //还是在最前面 Console.WriteLine("a after call:" +a); Console.WriteLine(@"my name is shoneworn my blog: www.cnblogs.com/shoneworn welcome to my blog !"); //对自己的博客做一下推广,同时也复习一下“@”的用法 Console.ReadKey(); } } }
常规单值传递(不适用ref):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace cxx { class RefTest { public int sqr( int i) { return i = i * i; //注意方法类型为int型,需要用到return来返回值 } } class refDemo { static void Main() { RefTest ob = new RefTest(); int a = 10; Console.WriteLine("a before call:" + a); int b = ob.sqr( a); //用b来接收值 Console.WriteLine("a after call:" + b); Console.WriteLine(@"my name is shoneworn my blog: www.cnblogs.com/shoneworn welcome to my blog !"); //对自己的博客做一下推广,同时也复习一下“@”的用法 Console.ReadKey(); } } }
相关文章推荐
- C#关于ref的用法(多个实参值的传递)
- 在C#中关于传递参数ref和out分别有什么区别
- C#中按引用传递与按值传递的区别,以及ref与out关键字的用法详解
- 关于<TabNavigator>的item的一些用法 例如传递navigation
- Android中关于传递对象的俩种用法,也就是Serializable和Parcelable的使用
- 关于ref 和out 的用法---困惑
- 关于向Mybatis传递多个参数进行SQL查询的用法
- 关于url提交请求时传递数组参数的用法
- 关于向Mybatis传递多个参数进行SQL查询的用法
- Flex2.0中关于传递不定参数个数的方法的定义和用法
- 关于static,ref,值传递的问题请教
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- C#编程中使用ref和out关键字来传递数组对象的用法
- 关于C++中实参形参的传递问题
- 关于函数实参传递结构体变量的思考
- 关于hit-test用法,视图事件传递链的控制
- 关于C#值类型,引用类型,值传递,引用传递(ref,out)
- cocos2d-x系列笔记技巧篇(2)---关于CREATE_FUNC宏的用法
- 【CSharp 学习笔记】关于ManualResetEvent的用法
- 关于pragma pack的用法C++中的内存对齐问题