Đã có nhiều câu hỏi xung quanh hỗ trợ cho các kiểu tham chiếu không thể rỗng trong .NET. Hy vọng lớn là hợp đồng mã, nhưng nó được giới hạn trong việc kiểm tra thời gian chạy cho những người có ngân sách hạn chế.Các loại tham chiếu không thể vô hiệu hóa (một lần nữa)
Đối với các cách tiếp cận khác với Hợp đồng mã, Jon Skeet đã viết một số blog post về điều này một vài năm trước đây và một trong những người nhận xét đã cung cấp một cái nhìn hữu ích NonNull struct. Điều này có vẻ giống như một cách tiếp cận tuyệt vời, và tôi có thể tưởng tượng mở rộng nó để cung cấp tất cả các loại không vô giá trị microtypes. Thao tác IL có thể là bước xây dựng sau được kích hoạt bởi thuộc tính trên cấu trúc, ví dụ:
//Microtype representing a non-zero age, so we want to disable the default ctor
[NoDefaultConstructor]
public struct Age
{
public Age(int age)
{
// Implementation (including validation) elided
}
}
Trước khi điều tra thêm, tôi muốn hỏi xem có ai biết về bất kỳ sự cố nào có thể gây ra không? Tôi đã không thể nghĩ ra được.
Trường hợp sử dụng của bạn cần loại tham chiếu không null là gì? –
Đối với những người có ngân sách trải dài để ReSharper, có một số chức năng kiểm tra vô giá hữu ích trong đó (mặc dù rõ ràng là không hoàn thành như các công cụ hợp đồng trong các phiên bản đắt tiền của VS) – AakashM
@AnthonyPegram Tôi nghĩ rằng hầu hết các tập quán tham chiếu là hoàn toàn không null , do đó, thực thi rằng thông qua chữ ký phương pháp là một chiến thắng trong điều khoản của tài liệu và an toàn. – Akash