程序开发 > C# > 正文

C# ref和out的区别

亮术网 2020-09-02 本网原创

编写程序过程中,有时会用到out和ref关键字;由于它们有些相似,所以常常会给人一些错觉。要正确的使用它们,清楚的了解它们的区别是必不可少的。

 

C# ref和out的区别

一、out 和 ref 相同点:它们都是传址的,执行方法后,原来的值都改变了。

 

二、out 和 ref 不同点:

1、使用ref时,传入的参数必须初始化;而使用out时不用初始化。

2、ref能把参数的值传进方法;而out要把参数清空(即使参数已经赋值也要清空),退出方法时,所有out参数都必须赋值。

 

具体的实例如下:

using System;
  class RefOutTest
  {
    static void refTest(ref int a, ref int b)
    {
      a = 10;
      b = a;
    }

  static void outTest(out int a, out int b)
    {
      //离开这个方法前,必须对 a 和 b 赋值,否则会报错。
      a = 10;
      b = 20;
    }

    static void Main()
    {
      int a = 1, b = 2;
      refTest(out a, out b);
      Console.WriteLine("a = {0}, b = {1}", a, b);

    int x,y;
      outTest(out x, out y);
      Console.WriteLine("x = {0}, y = {1}", x, y);
    }
  }

程序执行输出:

a = 10, b = 10

x = 10, y = 20

本文浓缩标签:refout区别C#