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