字典或散列表作为类中的参数化构造函数

时间:2012-08-16 09:19:14

标签: c# wpf dictionary constructor hashtable

我正在研究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)
            {
            }
    }

2 个答案:

答案 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)

  

我读过这篇文章Difference between Dictionary and Hashtable

好吧,Marc的回答似乎很清楚......

如果你是.NET 2.0或更高版本,你应该更喜欢Dictionary(和其他通用集合)

一个微妙但重要的区别是Hashtable支持多个读者线程和一个编写器线程,而Dictionary不提供线程安全性。如果您需要使用通用字典的线程安全,则必须实现自己的同步或(在.NET 4.0中)使用ConcurrentDictionary。

如果您不需要线程安全,则字典是类型安全和性能的首选方法。