1. public static void ChangeA(A a)
  2. {
  3. a.X = 2;
  4. }
  5. static void Main()
  6. {
  7. A a1 = new A { X = 1 };
  8. ChangeA(a1);
  9. WriteLine($"a1.X: {a1.X}");
  10. }

:::info 最终WriteLine 输出什么取决于A是结构体还是类。 :::

类是引用值,相当于c语言中的指针。
结构体是值类型。

ref参数

加上该参数,结构体作为参数传入,就可以传递结构体的引用值了。

  1. public static void ChangeA(ref A a)
  2. {
  3. a.X = 2;
  4. }

out参数

如果方法返回一个值,该方法通常声明返回类型,并返回结果。如果方法返回多个值,可能类型还不同,该怎么办?

  • 声明类和结构,把应该返回的所有信息都定义为该类型的成员
  • 使用元组类型
  • 使用out关键字 ```csharp public static bool TryParse(string s, out int result);

string input2 = ReadLine(); int result; if (int.TryParse(input2, out result)

) { WriteLine($”n: {n}”); } else { WriteLine(“not a number”); } ```