Tôi có một lớp "Status" trong C#, được sử dụng như thế này:thực thi yêu cầu chức năng gọi
Status MyFunction()
{
if(...) // something bad
return new Status(false, "Something went wrong")
else
return new Status(true, "OK");
}
Bạn nhận được các ý tưởng. Tất cả cuộc gọi của MyFunction nên kiểm tra tình trạng trả về: Tuy nhiên
Status myStatus = MyFunction();
if (! myStatus.IsOK())
// handle it, show a message,...
gọi Lazy thể bỏ qua Trạng thái.
MyFunction(); // call function and ignore returned Status
hoặc
{
Status myStatus = MyFunction();
} // lose all references to myStatus, without calling IsOK() on it
Có thể làm cho điều này là không thể? ví dụ. một ngoại lệ ném
Nói chung: bạn có thể viết một lớp C# mà bạn có để gọi một chức năng nhất định không?
Trong phiên bản C++ của lớp Trạng thái, tôi có thể viết một bài kiểm tra trên một số bool bIsChecked riêng trong số destructor và đổ chuông khi ai đó không kiểm tra trường hợp này.
Tùy chọn tương đương trong C# là gì? Tôi đọc ở đâu đó rằng "Bạn không muốn một destructor trong lớp C#"
Phương thức Vứt bỏ của giao diện IDisposable một tùy chọn?
Trong trường hợp này, không có tài nguyên không được quản lý nào miễn phí. Ngoài ra, nó không được xác định khi GC sẽ vứt bỏ đối tượng. Khi nó cuối cùng được xử lý, bạn vẫn có thể biết vị trí và thời điểm bạn bỏ qua trường hợp Trạng thái cụ thể đó không? Từ khoá "đang sử dụng" không có tác dụng, nhưng một lần nữa, nó không phải là yêu cầu cho những người gọi lười.
Trên ghi chú liên quan, tôi đã tìm thấy câu hỏi này: http://stackoverflow.com/questions/173670/why-is-there-no-raii-in-net – jan