A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李海龙 黑马帝   /  2011-12-6 20:25  /  2746 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ref   out 什么意思  具体用处

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

5 个回复

倒序浏览
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一般用在有多个返回值的场景。

评分

参与人数 1技术分 +3 收起 理由
李荣壮 + 3

查看全部评分

回复 使用道具 举报
简单来说:ref 传入参数只传入一个引用对象,对这个对象的更改影响到原数据。
out和ref相似,区别在于,out返回前,必须对变量赋值。

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
ref是值引用。无论在什么地方引用该变量,所做的更改都会修改原始值。
比如int a=0; b=ref a;c=ref b;对c的任何更改,a都会变化因为他们引用的是a的指针
out类型是输出型的参数,普通参数是不可以输出的。

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
参数前面加out ,相当于直接对接受值赋值
1)在方法的参数类型前加out,那么传参数的时候,也必须在number前面加out  表明这个参数不是传入的,而是用来传出值的
2)如果参数是以out形式传入的,那么在传入前可以不付初值。
3)在方法中对于由out修饰的,必须赋值,并且必须在使用前赋值。

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




评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马