Tôi đang viết một mã nhỏ để hiểu rõ hơn về property
và static property
. Như thế này:thuộc tính tĩnh trong C# 6
class UserIdentity
{
public static IDictionary<string, DateTime> OnlineUsers { get; set; }
public UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}
}
hoặc
class UserIdentity
{
public IDictionary<string, DateTime> OnlineUsers { get; }
public UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}
}
Kể từ khi tôi thay đổi nó để:
class UserIdentity
{
public static IDictionary<string, DateTime> OnlineUsers { get; }
public UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}
}
nó đã cho tôi thông báo lỗi:
tài sản hoặc indexer 'UserIdentity.OnlineUsers 'không thể được gán cho - nó chỉ được đọc
Tôi biết thuộc tính OnlineUsers
là read only
, nhưng trong C# 6, tôi có thể gán nó thông qua hàm tạo. Vì vậy, tôi đang thiếu gì?
vấn đề này cũng sẽ xảy ra trong C# 1.0 trở đi (generics sang một bên), chỉ với cú pháp khác nhau cho tuyên bố OnlineUsers –
@ MartinCapodici: Sau đó, nó sẽ phải là một lĩnh vực và không phải là một tài sản, bởi vì bạn không thể có một "tài sản chỉ đọc mà bạn cũng có thể gán cho", được thêm vào trong C# 6. –
Matti, đó là sự thật tôi đã suy nghĩ của một lĩnh vực được bao bọc bởi một tài sản để đạt được hiệu quả tương tự. –