美文网首页
使用ref和out参数

使用ref和out参数

作者: bravelion | 来源:发表于2019-10-01 16:37 被阅读0次

    1.交换两个数的值

    static void swap(int x,int y){

        int temp = x;

        x = y;

        y = temp;

    }

    static void main(){

        int x = 42;

        int y = 6;

        swap(x,y);

        Console.WriteLine($"x is {x} ,y is {y}");

    }

    运行后,发现x,y的值并没有改变,为什么?

    2.形参和实参

    实参:调用方法的参数,如下的x,y

    int x = 42;

    int y = 6;

    swap(x,y);

    形参:是接受实参的一方,如下的x,y

    static void swap(int x,int y){

    }

    向方法传递实参时,对应的参数(形参)通常会用实参的拷贝来初始化——不管参数是值类型,可空类型,还是引用类型。

    以上例子如果想实现交换的功能,可以使用ref关键字。

    static void swap(ref int x,ref int y){

    int temp = x;

    x = y;

    y = temp;

    }

    static void main(){

    int x = 42;

    int y = 6;

    swap(ref x,ref y);

    Console.WriteLine($"x is {x} ,y is {y}");

    }

    注意观察,会发现,修改了两个地方:

    1)方法参数添加了ref关键字

    2)调用方法时,传递参数,也要添加ref关键字

    那ref的作用是什么?

    3.ref的作用

    添加了ref前缀,C#编译器将生成代码传递对实参的引用,而不是传递实参的拷贝。

    4.out

    out的作用和ref相同,使用也一样。所不同的是,out要求,实参的初始化在方法中实现;而ref关键字标明的实参要求在传递给方法前就初始化。

    相关文章

      网友评论

          本文标题:使用ref和out参数

          本文链接:https://www.haomeiwen.com/subject/oebkpctx.html