📜  c# 引用调用 - C# (1)

📅  最后修改于: 2023-12-03 14:39:46.648000             🧑  作者: Mango

C# 引用调用

在 C# 中,引用调用是一种将变量传递给方法的方式。通过引用调用,可以将变量的地址传递给方法,从而在方法中修改该变量的值,而不是仅仅修改该变量的副本。在本文中,我们将介绍什么是引用调用,如何在 C# 程序中使用引用调用以及引用调用与值调用之间的区别。

什么是引用调用

在 C# 中,变量可以通过值类型和引用类型进行定义。值类型包括诸如 int、bool 和 char 等基本类型,而引用类型则包括诸如字符串和数组等对象类型。简单来说,值类型是直接存储在内存中的值,而引用类型则是引用另一个对象的指针。

当将变量作为参数传递给方法时,可以使用值调用或引用调用。在值调用中,变量的值被传递给方法,而在引用调用中,变量的地址被传递给方法,从而允许方法修改变量的值。

如何使用引用调用

要使用引用调用,需要将方法参数标记为 ref 或 out。使用 ref 关键字时,方法将接收变量的引用,从而可以修改变量的值。例如:

public class MyClass
{
  public void MyMethod(ref int x)
  {
    x = 10;
  }
}

public class Program
{
  public static void Main()
  {
    int myValue = 5;
    MyClass myClass = new MyClass();
    myClass.MyMethod(ref myValue);
    Console.WriteLine(myValue); // 输出 10
  }
}

使用 out 关键字时,方法也将接收变量的引用,但变量在方法内部被视为未初始化。因此,在方法内部,必须设置该变量的值,否则编译器将抛出错误。例如:

public class MyClass
{
  public void MyMethod(out int x)
  {
    x = 10;
  }
}

public class Program
{
  public static void Main()
  {
    int myValue;
    MyClass myClass = new MyClass();
    myClass.MyMethod(out myValue);
    Console.WriteLine(myValue); // 输出 10
  }
}
引用调用与值调用的区别

通过引用调用,可以修改变量的值,但不会影响传递给方法的原始变量。换句话说,引用调用允许方法修改变量,但不允许方法替换变量。

与之相反,通过值调用,可以在方法内部更改变量的值,但不会影响传递给方法的原始变量或任何其他变量。因此,值类型通常通过值调用进行传递,而引用类型通常通过引用调用进行传递。

结论

引用调用是一种将变量传递给方法并允许方法修改变量的值的方法。要使用引用调用,请将方法参数标记为 ref 或 out。虽然引用调用允许在方法内部修改变量的值,但不会影响传递给方法的原始变量或其他变量。