struct with value types and ref types : struct « struct « C# / CSharp Tutorial






using System;

class MyClass
{
  public string x;
  public MyClass(string s)  {
      x = s;
  }
}

struct MyStruct
{
  public MyClass refType;   // Ref type.
  public int valueType;     // Val type

  public MyStruct(string s)
  {
    refType = new MyClass(s);
    valueType = 9;
  }
}

class MainClass
{
  public static void Main(string[] args)
  {
    MyStruct valWithRef = new MyStruct("Initial value");
    valWithRef.valueType = 6;

    MyStruct valWithRef2;
    valWithRef2 = valWithRef;

    valWithRef2.refType.x = "I am NEW!";
    valWithRef2.valueType = 7;

    Console.WriteLine("Values after change:");
    Console.WriteLine("valWithRef.refType.x is {0}", valWithRef.refType.x);
    Console.WriteLine("valWithRef2.refType.x is {0}", valWithRef2.refType.x);
    Console.WriteLine("valWithRef.valueType is {0}", valWithRef.valueType);
    Console.WriteLine("valWithRef2.valueType is {0}", valWithRef2.valueType);
  }
}
Values after change:
valWithRef.refType.x is I am NEW!
valWithRef2.refType.x is I am NEW!
valWithRef.valueType is 6
valWithRef2.valueType is 7








6.1.struct
6.1.1.Structures
6.1.2.Declare a simple struct
6.1.3.A simple struct with method
6.1.4.class vs struct
6.1.5.Reference value type in a struct
6.1.6.struct with value types
6.1.7.struct with value types and ref types
6.1.8.Difference between class and struct during the reference passing