Tôi luôn luôn sử dụng để xem xét cấu trúc như một số loại đặc quyền thấp hơn, hoặc một cái gì đó với các tính năng thấp hơn. Có lẽ vì các khái niệm OOP thổi tất cả mọi thứ vào Lớp học.Tại sao Cấu trúc tĩnh không được phép trong C#?
Từ mức độ tiếp xúc nhỏ với C#, tôi hiểu rằng Đặt một lớp tĩnh, đảm bảo rằng tất cả các thành viên của lớp & đều là tĩnh. Ngoài ra, chúng ta không thể có một hàm khởi tạo để khởi tạo lớp đó vì chỉ có một cá thể duy nhất.
public static struct mystruct
{
public static int a;
}
Tôi đã được chỉ ra ngay tại đây khi lỗi tràn mà đây là phương pháp sai. Ai đó có thể xây dựng được.
Tôi nhận được lỗi thích hợp cho biết "tĩnh không hợp lệ cho mục này" khi tôi tạo tệp cs mới & biên dịch trong bảng điều khiển. Thật kỳ lạ khi tôi thêm điều này vào một dự án làm việc hiện có để xem trình biên dịch có phàn nàn hay không nhưng tôi không ngạc nhiên. Bất kỳ lý do cho điều này?
Trong C#, 'static' là một bí danh cho' sealed' trừu tượng trên khai báo kiểu (nó cũng cho phép một số kiểm tra thời gian biên dịch khác như đảm bảo phương pháp này tĩnh quá). Vì các cấu trúc là các kiểu giá trị và không cho phép hành vi đa hình, thì nó có ý nghĩa tại sao 'static' không được phép. Tuy nhiên, bạn có thể có các thành viên tĩnh trên một cấu trúc. –
@Steve: Nếu lớp là tĩnh, trình biên dịch cũng kiểm tra * sử dụng * của tên loại. Ví dụ, bạn không thể khai báo một tham số kiểu Enumerable. Bạn cũng có thể đã nhận thức được điều đó, nhưng tôi muốn thu hút sự chú ý đến nó :) –
@Jon: Đúng vậy - cảm ơn bạn đã nhắc tôi về điều đó. –