Vì mục đích đó, thuộc tính [Pure] đã được thêm vào không gian tên System.Diagnostic.Contracts. Xem here để được giải thích thêm. Tuy nhiên, bạn không thể ngăn chặn một thuộc tính duy nhất bị thay đổi. Phương thức này không được phép thay đổi trạng thái đối tượng ở tất cả (giống như const C++).
EDIT: Thật không may thuộc tính Pure không hoạt động với các công cụ hiện tại. Tôi thực hiện một thử nghiệm với đoạn mã sau, không có thông báo lỗi hoặc ở tĩnh cũng không ít kiểm tra kiểu thời gian chạy:
public class Test
{
private int x = 0;
[Pure]
public void Foo()
{
x++;
}
}
Về tài liệu của Pure kiểm tra sẽ được hỗ trợ trong tương lai '. Bất cứ khi nào đó là ("Nhóm Hợp đồng Mã đang làm việc nặng nề trên đó, do đó để đưa ra một kiểm tra độ tinh khiết trong một bản phát hành trong tương lai.").
Tôi đã sử dụng thuộc tính trong tin rằng nó hoạt động bình thường. Tài liệu nói rằng tất cả các phương thức được gọi trong một hợp đồng phải được khai báo là thuần túy. Nó không nói rằng đó là kiểm tra hay không.
Vì vậy, câu trả lời cho câu hỏi của bạn là: Hiện tại không có hỗ trợ nào cho điều này, nhưng có thể trong tương lai.
Tuyệt vời, cảm ơn. Nó hoạt động. –