我想存储键值数据并能够以有效的方式访问它。
基本上:我有一个自定义对象(EquipmentObj),并且该对象中有一个名为“DeviceType”的属性。在对象的构造函数中,我传递一个字符串,该字符串出现在Dictionary(LocalObj的局部变量)中,如果Dictionary有键,则返回一个值。
为了尽量减少在堆上初始化Dictionary 25次,(EquipmentObj被实例化25-50次),我想知道是否有更有效的方法来执行此操作。
我的第一个想法是XML,但我无法添加反序列化;我不会进入这个。
我的下一个想法可能是使用静态类。但是我仍然需要定义KeyValuePair或Dictionary,静态类不能有实例成员。
你们都建议什么?
这是我现在基本上做的一个例子。
class EquipmentObj
{
public EquipmentObj(string deviceType)
{
addItems();
this.DeviceType = EquipmentList.ContainsKey(device_Type) ? EquipmentList[deviceType] : "Default";
}
public string DeviceType { get; set; }
private Dictionary<string, string> EquipmentList = new Dictionary<string, string>();
private void addItems()
{
//Add items to Dictionary
}
}
答案 0 :(得分:1)
static
类不能包含实例成员,但非静态类可以包含static
个成员。您可以EquipmentList
和addItems()
同时static
而不更改EquipmentObj
本身。
class EquipmentObj
{
public EquipmentObj(string deviceType)
{
addItems();
this.DeviceType = EquipmentList.ContainsKey(device_Type) ? EquipmentList[deviceType] : "Default";
}
public string DeviceType { get; set; }
private static Dictionary<string, string> EquipmentList = new Dictionary<string, string>();
public static void addItems()
{
//Add items to Dictionary
}
}
你称之为:
EquipmentObj.addItems();
答案 1 :(得分:0)
您可以创建一个Manager类来处理设备类型,它不是必需的,但它确实分离了逻辑,并使您在应用程序中的其他区域访问设备类型更容易。
public class EquipmentObj
{
public EquipmentObj(string deviceType)
{
this.DeviceType = EquipmentObjManager.GetDeviceType(deviceType);
}
public string DeviceType { get; set; }
}
public class EquipmentObjManager
{
private static Dictionary<string, string> EquipmentList = new Dictionary<string, string>();
public static string GetDeviceType(string deviceType)
{
return EquipmentList.ContainsKey(deviceType) ? EquipmentList[deviceType] : "Default";
}
public static void AddDeviceType(string deviceTypeKey, string deviceType)
{
if (!EquipmentList.ContainsKey(deviceTypeKey))
{
EquipmentList.Add(deviceTypeKey, deviceType);
}
}
}
我不确定你在哪里使用词典,但你可以调用EquipmentObjManager.AddDeviceType
将项目添加到字典中。
对您来说可能不是最好的解决方案,但它可以提供帮助:)