理解C#中参数的值和引用以及传递结构和类引用的区别

2019-12-26 17:32:14王冬梅


class TheClass
{
  public string willIChange;
}

struct TheStruct
{
  public string willIChange;
}

class TestClassAndStruct
{
  static void ClassTaker(TheClass c)
  {
    c.willIChange = "Changed";
  }

  static void StructTaker(TheStruct s)
  {
    s.willIChange = "Changed";
  }

  static void Main()
  {
    TheClass testClass = new TheClass();
    TheStruct testStruct = new TheStruct();

    testClass.willIChange = "Not Changed";
    testStruct.willIChange = "Not Changed";

    ClassTaker(testClass);
    StructTaker(testStruct);

    Console.WriteLine("Class field = {0}", testClass.willIChange);
    Console.WriteLine("Struct field = {0}", testStruct.willIChange);

    // Keep the console window open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();
  }
}

输出:


  Class field = Changed
  Struct field = Not Changed
 

注:相关教程知识阅读请移步到c#教程频道。