0

我正在开发 wpf 应用程序,我必须将一些全局对象从一个类传递到另一个类,因此我为该类声明了一个参数化构造函数,我担心哪个作为参数、字典或哈希表的性能更好。
我读了这篇文章Dictionary and Hashtable之间的区别

下面的代码是使用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)
            {
            }
    }
4

2 回答 2

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();
}
于 2012-08-16T09:27:30.690 回答
1

我读了这篇文章Dictionary 和 Hashtable 之间的区别

好的,马克的回答似乎很清楚......

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

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

如果您不需要线程安全,那么 Dictionary 是类型安全和性能的首选方法。

于 2012-08-16T09:28:24.430 回答