Hãy tưởng tượng một ai đó mã hóa như sau:C# Compiler Enhancement Đề xuất
string s = "SomeString";
s.ToUpper();
Chúng ta đều biết rằng trong ví dụ trên, các cuộc gọi đến “ToUpper()” phương pháp là vô nghĩa vì chuỗi trả lại không được xử lý ở tất cả các . Tuy nhiên, nhiều người mắc lỗi đó và dành thời gian cố gắng khắc phục sự cố là bằng cách tự hỏi “Tại sao các ký tự trên biến‘ s ’của tôi không được viết hoa” ???? Vì vậy, nó sẽ không tuyệt vời nếu có một thuộc tính có thể được áp dụng cho phương thức "ToUpper()" có thể mang lại lỗi trình biên dịch nếu đối tượng trả về không được xử lý không? Không. Một cái gì đó như sau:
[MustHandleReturnValueAttribute]
public string ToUpper()
{
…
}
Nếu trật tự cho mã này để biên dịch một cách chính xác người dùng sẽ phải xử lý giá trị trả về như thế này:
string s = "SomeString";
string uppers = s.ToUpper();
Tôi nghĩ rằng điều này sẽ làm cho nó tinh thể rõ ràng rằng bạn phải xử lý giá trị trả lại nếu không có không có điểm khi gọi hàm đó.
Trong trường hợp ví dụ về chuỗi, đây có thể không phải là vấn đề lớn nhưng tôi có thể nghĩ ra các lý do hợp lệ khác tại sao điều này có ích.
Các bạn nghĩ sao?
Cảm ơn.
Tôi đã thực hiện điều đó trước đây, +1 –
@Rene: điểm hợp lệ, +1 – Codex