我正在研究wpf应用程序,我必须将一些全局对象从一个类传递给另一个类,所以我要为该类声明一个参数化的construtor,
我担心的是哪一个会更好地作为参数,字典或散列表
我读过这篇文章Difference between Dictionary and Hashtable
以下代码使用哈希表
public partial class Sample: Window
{
Hashtable session = new Hashtable();
string Path= string.Empty;
string PathID= string.Empty;
public Sample(Hashtable hashtable)
{
if (session != null)
{
this.session = hashtable;
Path= session["Path"].ToString()
PathID= session["MainID"].ToString();
}
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
}
答案 0 :(得分:3)
不会,
public Sample(string path, string mainId)
{
this.Path = path;
this.PathID = mainId;
InitializeComponent();
}
更简单,更快速,更容易阅读,将错误带入编译时间等?
如果要传递的值太多,
class NumerousSettings
{
public string Path {get; set;};
public string MainId {get; set;};
...
}
public Sample(NumerousSettings settings)
{
if (settings == null)
{
throw new CallTheDefaultContructorException();
}
this.Path = settings.Path;
this.PathID = settings.MainId;
...
InitializeComponent();
}
答案 1 :(得分:1)
好吧,Marc的回答似乎很清楚......
“如果你是.NET 2.0或更高版本,你应该更喜欢Dictionary(和其他通用集合)
一个微妙但重要的区别是Hashtable支持多个读者线程和一个编写器线程,而Dictionary不提供线程安全性。如果您需要使用通用字典的线程安全,则必须实现自己的同步或(在.NET 4.0中)使用ConcurrentDictionary。“
如果您不需要线程安全,则字典是类型安全和性能的首选方法。