Bây giờ, có rất nhiều điều để nói về điều đó. Nghiêm túc, có hàng trăm trang về chủ đề này trên mạng, và hầu hết nó đều đốt cháy vấn đề não của tôi với tốc độ đáng báo động.
Những gì tôi thực sự nhớ là, int và Int32 là điều tương tự, và cả hai hành động như một cấu trúc, không phải là một lớp. "int" là lối tắt tới Int32. (Nếu bạn đưa chuột qua một int, các tooltip đọc "struct System.Int32" Có nghĩa là:..
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/ vi/us/library/system.valuetype.aspx) – Oded
_được nhập từ System.ValueType class_ Đây là một dạng đặc biệt của việc bắt nguồn, không giống như thừa kế. Nó được tích hợp vào Fx. –
Dành cho người đọc trong tương lai: [** Sự thật về các loại giá trị **] (http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-truth-about-value-types.aspx) –