Teraz dużo o tym mówić. Poważnie, jest tu setki stron na ten temat w sieci, a większość z nich spala moją mózgową sprawę w alarmującym tempie.
To, co właściwie pamiętałem, to to, że int i Int32 to to samo, a obie działają jak struktura, a nie klasa. "int" jest skrótem do Int32. (Jeśli umieścisz kursor myszy nad int, tooltip brzmi "struct System.Int32" Co oznacza:..
public class BoxedInt
{
public int x;
public BoxedInt(int i) { x = i; }
}
public Test()
{
BoxedInt bi = new BoxedInt(10);
Boxed(bi);
Console.WriteLine(bi.x); // Returns 11, as any reference type would.
int vi = 10;
Valued(vi);
Console.WriteLine(vi); // Returns 10, because it acts like a struct. (Which it is)
}
public void Boxed(BoxedInt i)
{
i.x++;
}
public void Valued(int i)
{
i++;
}
[System.ValueType] (http://msdn.microsoft.com/ en-us/library/system.valuetype.aspx) – Oded
_derived from System.ValueType class_ Jest to szczególna forma czerpania, nie taka sama jak dziedziczenie. Jest wbudowany w Fx. –
Dla przyszłych czytelników: [** Prawda o typach wartości **] (http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value- typeses.aspx) –