Dav*_*.ca 1 c# collections dictionary
我需要定义一个带有内部集合对象的类,以通过字符串键来保存不同类型的值(例如string,int,float,DateTime和bool).我可以使用Hashtable,因为它不是强类型集合类,而Dictionary用于强类型项(尽管我可以使用对象作为Dictionary).
这是我想要定义我的类及其用法的情况:
public class MyBaseClass<D> {
protected Hashtable ht = new Hashtable();
MyClass public SetValue<T>(string key, T value)
{
ht.Add(key, value);
return this;
}
public abstract D GetObject();
}
// Example of using the base class for data as class Data1
public MyClass<Data1> : MyBaseClass<Data1> {
public Data1 GetObject() {
return new Data1 {
Property1 = ht["key1"] as string,
Property2 = Int.Parse(ht["key2"].ToString())
}
}
Run Code Online (Sandbox Code Playgroud)
以上示例,我不确定在MyBaseClass中保存数据的最佳集合是什么?我读了一些关于Hashtable的文章.它是一个过时的集合,与Dictionary集合相比性能要慢得多.我应该使用.Net 3.5中的Dictionary或任何其他可用的集合吗?
就我个人而言,我会Dictionary<string, object>在这种情况下使用.至少这将阻止您尝试使用非字符串键.
我个人也会停止使用受保护的字段 - 考虑使用受保护的setter和public getter向您的基类添加索引器:
public object this[string key]
{
get { return ht[key]; }
protected set { ht[key] = value; }
}
Run Code Online (Sandbox Code Playgroud)
如果您希望它null通过缺失键返回访问权限,则应TryGetValue在getter中使用.同样Add,如果您希望在重复键添加时失败,则可以在setter中使用.
| 归档时间: |
|
| 查看次数: |
2303 次 |
| 最近记录: |