Trong C#, Structs được quản lý về mặt giá trị và các đối tượng được tham chiếu. Từ hiểu biết của tôi, khi tạo một thể hiện của một lớp, từ khóa new
gây C# để sử dụng thông tin lớp để làm cho ví dụ, như trong dưới đây:Từ khóa "mới" làm gì với cấu trúc trong C#?
class MyClass
{
...
}
MyClass mc = new MyClass();
Đối với struct, bạn không tạo ra một đối tượng mà chỉ đơn giản thiết lập một biến với một giá trị:
struct MyStruct
{
public string name;
}
MyStruct ms;
//MyStruct ms = new MyStruct();
ms.name = "donkey";
những gì tôi không hiểu là nếu khai báo các biến bởi MyStruct ms = new MyStruct()
, những gì đang từ khóa new
đây đang làm để báo cáo kết quả? . Nếu struct không thể là một đối tượng, thì new
ở đây sẽ khởi tạo ở đâu?
Một thể hiện của một 'struct' * là * một đối tượng. Sự khác biệt bạn có lẽ là sự hiểu lầm là giữa các loại giá trị và các loại tham chiếu. –
nhưng trong C không có đối tượng và cấu trúc không phải là một đối tượng. Vì vậy, trong C# struct được thực hiện như là đối tượng? – KMC
Suy nghĩ của C# về C là không hữu ích. Bỏ qua những khác biệt về cú pháp, chúng là những ngôn ngữ hoàn toàn khác nhau. –