سؤال

عند التعامل مع مجموعة من أزواج المفاتيح/القيمة ، هل هناك أي فرق بين استخدام طريقة ADD () وتعيينه مباشرة؟

على سبيل المثال ، سيكون لدى htmlgenericcontrol مجموعة سمات:

var anchor = new HtmlGenericControl("a");

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

هل هي مسألة تفضيل بحتة ، أم أن هناك سببًا لفعل واحد أو آخر؟

هل كانت مفيدة؟

المحلول

فهي مكافئة لاستخدامك ، في هذه الحالة ، تشغيل هذا:

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

في الواقع يدعو هذا داخليًا:

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

في AttributeCollection ال this[string key] يبدو Setter مثل هذا:

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

للإجابة على السؤال ، في حالة AttributeCollection, ، إنها مجرد مسألة تفضيل. ضع في اعتبارك ، هذا ليس صحيحًا لأنواع التجميع الأخرى ، على سبيل المثال Dictionary<T, TValue>. في هذه الحالة ["class"] = "xyz" سيتم تحديث القيمة أو ضبطها ، حيث .Add("class", "xyz") (إذا كان لديه بالفعل ملف "class" الإدخال) من شأنه أن يرمي خطأ دخول مكرر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top