每次加载程序时,我都需要一本字典来获得大约15个值。现在我正在使用一个名为“Load_Dictionary”的函数,它只是添加每个值。你怎么建议加载像这样的字典?通过功能?使用XML文件?
答案 0 :(得分:4)
创建一个静态只读属性/字段并将其设置在类的静态构造函数中。
public static readonly Dictionary<string, string> Field;
static Foo()
{
Field = new Dictionary<string, string>
{
{"key", "value"},
};
}
或者在声明中做出任务:
public static readonly Dictionary<string, string> Field = new Dictionary<string, string>
{
{"key", "value"},
};
答案 1 :(得分:3)
请注意,在C#3.0中,您可以使用集合初始值设定项初始化静态字段,然后您不需要自己的构造函数。保持数据私有并提供访问机制以避免同步数据的需要(因为它只是被读取):
private static readonly Dictionary<string, string> myData
= new Dictionary<string, string> {
{"abc","def"},
{"ghi","jkl"},
{"mno","pqr"},
};
public static string GetValue(string key) { return myData[key]; }
如果您要加载 lot 数据,请考虑某种序列化形式。 Xml,二进制,数据库 - 无论如何。
答案 2 :(得分:2)
创建一个类的静态属性,并在get访问器中检查私有静态副本是否为null,如果是,则构建它,否则返回
[ThreadStatic]
private static Dictionary<string, string> _MyProperty;
public static Dictionary<string, string> MyProperty
{
get
{
return _MyProperty = _MyProperty ?? StaticFunctionToLoadValues();
}
}
答案 3 :(得分:0)
要在正确的位置初始化它,我将创建一个静态私有函数,返回具有正确值的字典,并将其用作类中静态字段的成员初始化:
class Foo
{
static Dictionary<string, string> makeDictionary()
{
return new Dictionary<string, string>
{
{"hello", "mum"},
};
}
static Dictionary<string, string> theDictionary = makeDictionary();
}
至于如何编写该函数,它实际上取决于数据的形式。这种静态初始化风格应该是您的首选,除非它不适合您。由于您正在编写该函数,因此您可以随时添加其他逻辑。