1

キーと値のペアのコレクションを処理する場合、Add()メソッドを使用することと直接割り当てることの間に違いはありますか?

たとえば、HtmlGenericControlには属性コレクションがあります。

var anchor = new HtmlGenericControl("a");

// These both work:
anchor.Attributes.Add("class", "xyz");
anchor.Attributes["class"] = "xyz";

それは純粋に好みの問題ですか、それともどちらかを行う理由がありますか?

4

1 に答える 1

4

これらはあなたの使用と同等であり、この場合、これを実行します:

anchor.Attributes["class"] = "xyz";

実際にはこれを内部的に呼び出します:

anchor.Attributes.Add("class", "xyz");

セッターでは次のようにAttributeCollectionなりthis[string key]ます。

public string this[string key]
{
  get { }
  set { this.Add(key, value); }
}

したがって、質問に答えるには、の場合AttributeCollection、それは好みの問題です。これは、たとえば、他の種類のコレクションには当てはまらないことに注意してくださいDictionary<T, TValue>。この場合["class"] = "xyz"、値を更新または設定します。ここで.Add("class", "xyz")(すでに"class"エントリがある場合)、重複エントリエラーがスローされます。

于 2010-03-24T16:28:11.807 に答える