أداء myCollection.add () مقابل mycollection ["المفتاح"
-
22-09-2019 - |
سؤال
عند التعامل مع مجموعة من أزواج المفاتيح/القيمة ، هل هناك أي فرق بين استخدام طريقة 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"
الإدخال) من شأنه أن يرمي خطأ دخول مكرر.
لا تنتمي إلى StackOverflow