سؤال

ودون التهيئة كيف من الممكن لتعيين قيم لصفائف؟

string[] s={"all","in","all"};

I mean why did not the compile show error?.Normally we need to 
initialize ,before assign values.
هل كانت مفيدة؟

المحلول

وانها السكر فقط النحوي.

وهذا ما يلي:

string[] s = {"all","in","all"};

ويتم ترجمة إلى نفس رمز على النحو التالي:

string[] tmp = new string[3];
tmp[0] = "all";
tmp[1] = "in";
tmp[2] = "all";
string[] s = tmp;

لاحظ أن الإشارة مجموعة لم يتم تعيين لs حتى يتم تعيين جميع العناصر. هذا ليس المهم في هذه الحالة بالذات حيث اننا إعلان <م> الجديد متغير، ولكن من شأنه أن يجعل مختلفة في هذا الموقف:

string[] s = { "first", "second" };
s = new string[] { s[1], s[0] };

والشيء نفسه ينطبق على موضوع وجمع المهيآت - يتم تعيين متغير إلا في نهاية

.

نصائح أخرى

ومن الممكن أن يعلن متغير صفيف دون التهيئة.

والتحقق من ذلك http://msdn.microsoft.com/en- لنا / مكتبة / 0a7fscd0٪ 28VS.71٪ 29.aspx

وأنت لا "تحديد قيمة مجموعة". كنت تهيئة متغير من نوع "إشارة إلى مجموعة". القيمة التي كنت تهيئة أنها إشارة إلى مجموعة التي تم إنشاؤها بواسطة استخدام قصيرة مجموعة تركيب مهيئ {...}. في حين أنه لا يجوز إلا في مهيئ للمتغيرات من نوع مصفوفة، وهو ما يعادل بالضبط إلى new T[] { ... }، حيث يتم استخلاصه T من نوع متغير.

وأعتقد أنك تريد أن تعرف لماذا

 string[] s={"all","in","all"};

ويعمل عندما كنت تتوقع أن تكون هناك حاجة لتهيئة مجموعة الأولى من هذا القبيل:

string[] s = new string[];

أو

string[] s = new string[] {"all","in","all"};

والجواب هو مجرد السحر مترجم. المترجم يعرف على أساس تهيئة كيفية كبيرة لجعل مجموعة لذلك لا مجرد وراء الكواليس بالنسبة لك. مثل الكثير من الكلمة var، وهذه النقطة هي للحد من كمية المعلومات الزائدة كنت مطلوبا للكتابة.

والجزء {"all","in","all"} هو التهيئة. الجزء new string[] يمكن حذفها لأن الأقواس المعقوفة وسلسلة قصيرة ناحية التدوين. نلقي نظرة على MSDN على واحدة البعد صالحة.

string[] s = new string[] { "all","in","all"};

ونسخة مختصرة لها

string[] s = {"all","in","all"};

وهي نفس الشيء. انظر MSDN (وتهيئة صفائف قسم) لأكثر التفاصيل.

وأنت لا تحتاج [] جزء سلسلة جديدة في C # 3 أو أعلى - وهذا يعمل بشكل جيد

string[] s = { "all","in","all"};

وانها مجرد حالة من المترجم أن يكون أذكى قليلا والعمل بها ما تعنيه - سوف النهاية الخلفية IL تكون هي نفسها

.

ويمكنك القيام بذلك ببساطة لأنه سمح لها، القيام بذلك في خطوتين ليس من الضروري لذلك هذا هو الاختزال. تنظر فيه السكر.

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