0

私は wpf アプリケーションに取り組んでおり、あるクラスから別のクラスにいくつかのグローバル オブジェクトを渡す必要があるため、クラスのパラメーター化されたコンストラクターを宣言しています。
私はこの投稿を読みます辞書とハッシュテーブルの違い

次のコードはハッシュテーブルを使用しています

      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

私はこの投稿を読みました辞書とハッシュテーブルの違い

OK、マークの答えはかなり明確に見えました...

" .NET 2.0 以降を使用している場合は、Dictionary (およびその他の汎用コレクション) を優先する必要があります

微妙ではあるが重要な違いは、Hashtable は単一のライター スレッドで複数のリーダー スレッドをサポートするのに対し、Dictionary はスレッド セーフを提供しないことです。ジェネリック ディクショナリでスレッド セーフが必要な場合は、独自の同期を実装するか、(.NET 4.0 では) ConcurrentDictionary を使用する必要があります。"

スレッド セーフが必要ない場合は、型の安全性とパフォーマンスのためにディクショナリを使用することをお勧めします。

于 2012-08-16T09:28:24.430 に答える