public override string ToString() => myValue.ToString();
public override string ToString() => myValue.ToString();
public static void Main()
var myStructArr = new MyStruct[5];
var myClassArr = new MyClass[5];
for (int i = 0; i < 5; i++)
myStructArr[i] = new MyStruct(i);
for (int i = 0; i < 5; i++)
myClassArr[i] = new MyClass(i);
Console.WriteLine("Printing MyStruct values original");
for (int i = 0; i < 5; i++)
Console.Write($"{myStructArr[i]} ");
Console.WriteLine("Printing MyClass values original");
for (int i = 0; i < 5; i++)
Console.Write($"{myClassArr[i]} ");
Console.WriteLine("Modifying values directly from array");
for (int i = 0; i < 5; i++)
myStructArr[i].myValue = 10 + i;
for (int i = 0; i < 5; i++)
myClassArr[i].myValue = 10 + i;
Console.WriteLine("Printing MyStruct values after 1st modification");
for (int i = 0; i < 5; i++)
Console.Write($"{myStructArr[i]} ");
Console.WriteLine("Printing MyClass values after 1st modification");
for (int i = 0; i < 5; i++)
Console.Write($"{myClassArr[i]} ");
Console.WriteLine("Modifying values using a local variable");
for (int i = 0; i < 5; i++)
var myStruct = myStructArr[i];
myStruct.myValue = 20 + i;
for (int i = 0; i < 5; i++)
var myClass = myClassArr[i];
myClass.myValue = 20 + i;
Console.WriteLine("Printing MyStruct values after 2nd modification");
for (int i = 0; i < 5; i++)
Console.Write($"{myStructArr[i]} ");
Console.WriteLine("Printing MyClass values after 2nd modification");
for (int i = 0; i < 5; i++)
Console.Write($"{myClassArr[i]} ");
Console.WriteLine("Modifying values using a ref local variable");
for (int i = 0; i < 5; i++)
ref var myStruct = ref myStructArr[i];
myStruct.myValue = 30 + i;
for (int i = 0; i < 5; i++)
ref var myClass = ref myClassArr[i];
myClass.myValue = 30 + i;
Console.WriteLine("Printing MyStruct values after 3rd modification");
for (int i = 0; i < 5; i++)
Console.Write($"{myStructArr[i]} ");
Console.WriteLine("Printing MyClass values after 3rd modification");
for (int i = 0; i < 5; i++)
Console.Write($"{myClassArr[i]} ");