gpt4 book ai didi

c# - C# 6 中的静态属性

转载 作者:可可西里 更新时间:2023-11-01 03:05:07 24 4
gpt4 key购买 nike

我正在编写一小段代码以更好地理解属性静态属性。像这样:

class UserIdentity
{
public static IDictionary<string, DateTime> OnlineUsers { get; set; }
public UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}
}

class UserIdentity
{
public IDictionary<string, DateTime> OnlineUsers { get; }
public UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}
}

因为我把它改成:

class UserIdentity
{
public static IDictionary<string, DateTime> OnlineUsers { get; }
public UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}
}

它给了我错误信息:

Property or indexer 'UserIdentity.OnlineUsers' cannot be assigned to -- it is read only

我知道属性 OnlineUsers只读,但在 C# 6 中,我可以通过构造函数分配它。那么,我错过了什么?

最佳答案

您正试图在实例构造函数中分配一个只读静态属性。这将导致每次创建新实例时都会分配它,这意味着它不是只读的。您需要在静态构造函数中分配给它:

public static IDictionary<string, DateTime> OnlineUsers { get; }

static UserIdentity()
{
OnlineUsers = new Dictionary<string, DateTime>();
}

或者您可以直接内联:

public static IDictionary<string, DateTime> OnlineUsers { get; } = new Dictionary<string, DateTime>();

关于c# - C# 6 中的静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38170840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com