Về cơ bản trình biên dịch chuyển mã của bạn vào một cái gì đó như thế này:
private string <__>firstName;
public string FirstName
{
get { return <__>firstName; }
set { <__>firstName = value; }
}
Đó là khó có khả năng là tên chính xác, nhưng việc sử dụng các dấu ngoặc nhọn trong tên là quan trọng - bởi vì nó làm cho nó trở thành một tên không rõ ràng . (Đó là thuật ngữ không chính thức, nhưng được sử dụng rộng rãi - tôi không biết liệu Eric Lippert có thực sự đặt ra nó hay không, hoặc liệu anh ta có phải là người đầu tiên sử dụng nó trong thứ tôi đọc không.) Đó là một cái tên không phải là một định danh C# hợp lệ, nhưng CLR khá hài lòng. Có hai lợi ích:
- Trình biên dịch không cần phải lo lắng về xung đột đặt tên với định danh của bạn
- Trình biên dịch không cần phải lo lắng về việc liệu bạn đang cố gắng đề cập đến lĩnh vực này trong mã của riêng bạn - bạn không thể, bởi vì cái tên không thể nói được!
Nó sử dụng kỹ thuật tương tự cho tất cả các loại mã khác được tạo ra - các kiểu nặc danh, chức năng mang tính chất khối iterator, vv
Nguồn
2012-02-13 07:05:02
Đây là một trùng lặp. Xem các liên kết có liên quan ở bên cạnh. – leppie
có thể trùng lặp của [C# 3.0: Thuộc tính tự động - tên của biến riêng tư được tạo bởi trình biên dịch] là gì (http://stackoverflow.com/questions/1277018/c-sharp-3-0-automatic-properties-what- be-be-the-name-of-private-variable-c) – nawfal