c# - StringDictionary 作为常见的静态列表?

标签 c# stringdictionary

我想做的是拥有一个项目方面的静态字典,这样我就可以从代码中的任何位置访问单个列表。

到目前为止,我想出了这个解决方案,一个具有公共(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/

相关文章:

generics - StringDictionary 与 Dictionary<string, string>

c# - 在 C# .NET 中,StringDictionary 没有复制构造函数是有原因的吗?

c# - RGB转长转RGB

c# - 为什么在与 null 比较时转换为对象?

c# - 如何正确使用双引号?

c# - 将字符串转换为十进制,保留准确的输入格式

C# 捕获 python.exe 输出并将其显示在文本框中