ref和out的区别

1.ref和out的区别:

简介:ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递。对于编译后的程序而言,他们之间没有任何区别,也就是说他们只有语法的区别

主要区别分析:

注:这里只介绍比较重要的区别,其他的区别通过这几条都可以分析出来

  • ref传进去的参数在调用前就初始化,而out就不必(主要记住这条其他的都可以推倒出来);
  • ref穿进去的参数在方法体(函数)内部“可以不被修改”但out必须在离开函数体前进行赋值

 

 1 static void Main(string[] args)
 2 {
 3        int i=3;    //对于ref这里必须进行初始化
 4        int j=4;    //对于out这里初始化了也没用,方法体了是得不到这个值的
 5        method(ref i);      //method(ref int i=3)这样是错误的
 6        method(out j)       //method(out int i=3)这样也是错误的
 7        Console.ReadKey();
 8 }
 9 
10 static void method(ref int i)
11 {
12         i=20;        //在这里也可以不对i进行赋值
13         Console.WriteLine(i);
14 }
15 
16 static void method(out int i)
17 {
18         i=20;        //这里就必须给i进行赋值了
19         Console.WriteLine(i);
20 }

 

下面介绍ref和out关于重载和调用前的初始值:

    • 关于重载
        • 有ref,out的关键字的方法可以与没有ref,out关键字的方法构成重载
    • 调用前初始值
        • ref在调用前实参必须初始值,否则编译器将提示使用了未赋值的局部变量;
        • out作为参数作为参数在调用前,实参可以不赋初始值

  下面通过两个案例深入进行分析:

案例一:

 

案例二:

      

 

                    

 

posted on 2015-06-02 14:14  风雪幻林  阅读(344)  评论(0编辑  收藏  举报