public struct MyStruct0
{
public string Name { get; set; }
// Call ToString() will call ValueType.ToString(), which has boxing
}
public struct MyStruct1
{
public string Name { get; set; }
public override string ToString()
{
return base.ToString(); // boxing
}
}
public struct MyStruct2
{
public string Name;
public override string ToString()
{
return Name; // no boxing
}
}
MyStruct0 m0 = new MyStruct0();
MyStruct1 m1 = new MyStruct1();
MyStruct2 m2 = new MyStruct2();
m0.ToString(); // boxing
m1.ToString(); // boxing
m2.ToString(); // no boxing, see ToString() defined in MyStruct2