黑马程序员技术交流社区

标题: ref out 什么意思 具体用处 [打印本页]

作者: 李海龙    时间: 2011-12-6 20:25
标题: ref out 什么意思 具体用处
ref   out 什么意思  具体用处
作者: 林洲    时间: 2011-12-6 23:52
1、ref参数运用的例子
static void Main(string[] args)
        {
            int age = 20;
            IncAge(ref age);
            Console.WriteLine(age);
            Console.ReadKey();
        }
        static void IncAge(ref int age)//此时的age指向的就是主函数中age变量所在内存中的位子,即传递了引用
        {
            age++;
        }//
输出age=21。
2、out参数运用的例子

static void Main(string[] args)
        {
            int age = 20;
            IncAge(out age);
            Console.WriteLine(age);
            Console.ReadKey();
        }

        static void IncAge(out int age)
        {
            age = 30;
            age++;
        }
此时输出age=31,与main函数中age的赋值无关。

结论:ref必须先初始化,因为是引用,所以必须先“有”,才能引用,而out则是内部为外部赋值,所以不需要初始化,初始化了也没用。
ref应用场景内部对外部的值进行改变(也可以是不改变),out则是内部为外部赋值(必须赋予一个值),out一般用在有多个返回值的场景。
作者: 黄友    时间: 2011-12-7 00:03
简单来说:ref 传入参数只传入一个引用对象,对这个对象的更改影响到原数据。
out和ref相似,区别在于,out返回前,必须对变量赋值。
作者: 刘立娜    时间: 2011-12-7 11:36
ref是值引用。无论在什么地方引用该变量,所做的更改都会修改原始值。
比如int a=0; b=ref a;c=ref b;对c的任何更改,a都会变化因为他们引用的是a的指针
out类型是输出型的参数,普通参数是不可以输出的。
作者: 张大福    时间: 2011-12-13 21:03
第一种思维方式:ref既作输入又作输出,out只作输出。
第二种思维方式:ref是值类型的引用。对于值类型,我们编程序函数或者方法时,希望改变入参变量的值,比如交换函数static void swap(int m, int n),主方法中用swap(a,b);但是值类型传递的是值,在函数或方法中处理后值不能改变,a和b的值不变,这样就不符合设计要求;static void swap(ref int m ,ref int m),主方法中用swap(ref a,ref b),能让a和b改变,符合设计要求;。out只作输出。
作者: 王富恒    时间: 2011-12-13 21:53
参数前面加out ,相当于直接对接受值赋值
1)在方法的参数类型前加out,那么传参数的时候,也必须在number前面加out  表明这个参数不是传入的,而是用来传出值的
2)如果参数是以out形式传入的,那么在传入前可以不付初值。
3)在方法中对于由out修饰的,必须赋值,并且必须在使用前赋值。

ref 既可以往里传值 也能往外反值;
在传参数的过程中,如果参数有out或者ref修饰的话,那么改变方法中的参数变量的值,调用者方法中的变量的值也会相应的发生改变。









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2