我想做的是拥有一个项目方面的静态字典,这样我就可以从代码中的任何位置访问单个列表。
到目前为止,我想出了这个解决方案,一个具有公共(public)属性的公共(public)静态类:
public static class Common
{
public static StringDictionary Domains
{
get
{
StringDictionary list = new StringDictionary();
list.Add("212", "Location A");
list.Add("555", "Location B");
list.Add("747", "Location C");
list.Add("000", "Location D");
return list;
}
}
}
我以这种方式使用(我用它来替换 GridView 中单元格的内容):
if (Common.Domains.ContainsKey(e.Row.Cells[5].Text))
{
e.Row.Cells[5].Text = Common.Domains[e.Row.Cells[5].Text];
}
else
{
e.Row.Cells[5].Text = "n/a";
}
但我不知道这是否是一个有效的解决方案,和/或是否有其他(更好)的方法来做到这一点......有人可以给出提示吗?
提前致谢,安德里亚。
最佳答案
您可能不希望每次访问该属性时都重新创建列表。将构造移动到静态构造函数中:
public static class Common
{
private static StringDictionary _domains;
static Common()
{
_domains = new StringDictionary();
_domains.Add("212", "Location A");
_domains.Add("555", "Location B");
_domains.Add("747", "Location C");
_domains.Add("000", "Location D");
}
public static StringDictionary Domains
{
get
{
return _domains;
}
}
}
您应该知道,返回的字典不是只读的。因此此类的客户端可以修改集合(例如添加/删除一些条目)。
关于c# - StringDictionary 作为常见的静态列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756723/