سؤال

هل هناك فرق (أداء النفقات العامة) بين هذين طرق تهيئة كائن:

MyTypedDataSet aDataSet = new MyTypedDataSet();
aDataSet .Merge(anotherDataSet);
aDataSet .Merge(yetAnotherDataSet);

و

MyTypedDataSet aDataSet = anotherDataSet;
aDataSet .Merge(yetAnotherDataSet);

التي تنصحون ؟

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

المحلول

في حين كيث هو صحيح كما أعتقد على سبيل المثال كان ببساطة بسوء اختياره.عموما, فمن الأفضل أن تهيئة إلى "الحق" وجوه من البداية ، لا بناء وسيطة ، الكائن فارغة كما في حالتك.لسببين:

  1. الأداء.وهذا ينبغي أن يكون واضحا:إنشاء كائن تكاليف الوقت لذلك خلق أقل الكائنات هو أفضل.
  2. كثيرا أكثر أهمية ومع ذلك ، فإنه من أفضل الدول الخاص بك القصد.يمكنك القيام عموما لا تنوي إنشاء عديمي الجنسية/فارغة الكائنات.بل كنت تنوي إنشاء الكائنات مع بعض الدولة أو المحتوى.تفعل ذلك.لا تحتاج إلى إنشاء عديمة الفائدة (لأنه فارغ) مؤقتة.

نصائح أخرى

هذين الخطين تفعل أشياء مختلفة.

أول واحد يخلق مجموعة جديدة ثم يدمج مجموعة ثانية في ذلك.

والثاني يحدد ds الإشارة إلى نقطة المجموعة الثانية ، لذلك:

MyTypedDataSet ds1 = new MyTypedDataSet();
ds1.Merge(anotherDataSet);
//ds1 is a copy of anotherDataSet
ds1.Tables.Add("test")

//anotherDataSet does not contain the new table

MyTypedDataSet ds2 = anotherDataSet;
//ds12 actually points to anotherDataSet
ds2.Tables.Add("test");

//anotherDataSet now contains the new table

حسنا, دعونا نفترض أن ما قصدته هو:

MyClass o1 = new MyClass();
o1.LoadFrom( /* some data */ );

//vs

MyClass o2 = new MyClass( /* some data */ );

ثم هذا الأخير هو أفضل ، كما السابق يخلق كائن فارغ قبل ملء ذلك.

ومع ذلك ما لم initialising فئة فارغة عالية التكلفة أو تتكرر عدد كبير من المرات الفرق ليست بتلك الأهمية.

الثاني المثال لا لا إنشاء new dataset.انها مجرد لحظة المرجعية القائمة بيانات.

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