I'm writing a small code to more understand about property and static property. Like these:
class UserIdentity { public static IDictionary<string, DateTime> OnlineUsers { get; set; } public UserIdentity() { OnlineUsers = new Dictionary<string, DateTime>(); } } or
class UserIdentity { public IDictionary<string, DateTime> OnlineUsers { get; } public UserIdentity() { OnlineUsers = new Dictionary<string, DateTime>(); } } Since I changed it to:
class UserIdentity { public static IDictionary<string, DateTime> OnlineUsers { get; } public UserIdentity() { OnlineUsers = new Dictionary<string, DateTime>(); } } it gave me error message:
Property or indexer 'UserIdentity.OnlineUsers' cannot be assigned to -- it is read only
I knew the property OnlineUsers was read only, but in C# 6, I can assign it via constructor. So, what am I missing?
You're trying to assign to a read only static property in an instance constructor. That would cause it to be assigned every time a new instance is created, which would mean it's not read only. You need to assign to it in the static constructor:
public static IDictionary<string, DateTime> OnlineUsers { get; } static UserIdentity() { OnlineUsers = new Dictionary<string, DateTime>(); } Or you can just do it inline:
public static IDictionary<string, DateTime> OnlineUsers { get; } = new Dictionary<string, DateTime>();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With