C#中的 out 与 ref 的区别

不同点:

        ref :必须是要在函数体外初始化,强调的是传入外面的值,然后在函数体里面进行修改,然后再传出去。

      1、ref传进去的参数必须在调用前初始化,out不必,即:

1

2

3

4

5

         

        int i;        

        SomeMethod(ref i);//语法错误

        SomeMethod(out i);//通过

        

out :必须要在函数体内初始化,在外面初始化没意义。也就是说out型参数,在函数体内是不能接受到函数体外传入的处世值             的,所以out型参数强调的是 传出,也就是该值在传入之前是无关紧要的,

2、ref传进去的参数在函数内部可以直接使用,而out不可:

1

2

3

4

5

6

7

8

9

10

        public void SomeMethod(ref int i)        

        {

            int j=i;//通过

            //...

        }

        public void SomeMethod(out int i)

        {

            int j=i;//语法错误

        }

      

共同点:

              它们都是引用传递,所以它们在函数体里面进行的修改,都会影响外面的值。

              尽管ref和out在运行时的处理方式不同,但它们在编译时的处理方式是相同的。因此,如果一个方法采用ref参数,而另                一个方法采用out 参数,则无法重载这两个方法。

注意1:属性不是变量,因此不能作为ref参数传递。

注意2:ref传进去的参数在函数内部可以不被修改,但out必须在离开函数体前进行赋值。

猜你喜欢

转载自blog.csdn.net/weixin_41998122/article/details/81777866