Trong .NET
tính có nghĩa vụ phải là công dân hạng nhất tuy nhiên trong IL
getters sở hữu mã và setters được thực hiện như get_
PropertyName và set_
PropertyName.Tại sao các nhà định cư bất động sản và getters đụng độ với các phương thức get_X và set_X?
class Property
{
int Value { get { return 42; } }
int get_Value() { return 6 * 9; }
void set_Value(int i) { } // Error even though Value is a read only property
}
Output:
lỗi CS0082: Loại 'SO.Property' đã bảo lưu một thành viên gọi là 'get_Value' với các loại cùng một tham số
lỗi CS0082: Loại 'SO. Thuộc tính 'đã dự trữ thành viên có tên' set_Value 'có cùng các loại thông số
Tại sao igners of .NET
quyết định sử dụng tên có thể xung đột với mã người dùng? Họ có thể đã sử dụng một nhân vật bất hợp pháp (như Java sử dụng $
cho nội dung lớp học).
Các định dạng get_Value() và set_Value() cũng đi ngược lại C# Quy ước đặt tên (http://msdn.microsoft.com/en-us/library/ms229045.aspx): "Không sử dụng dấu gạch dưới, dấu gạch nối hoặc bất kỳ ký tự không phải số nào khác. " Có thể chính xác là do vấn đề này, nhưng quan điểm là bạn không nên sử dụng định dạng này trong mã C# của bạn. – alastairs