سؤال

هل من الممكن القيام بما يلي (على سبيل المثال تهيئة صفيف BOOL وتعيين جميع العناصر على TRUE) في سطر واحد باستخدام المهيئات الكائن؟

int weeks = 5;
bool[] weekSelected = new bool[weeks];
for (int i = 0; i < weeks; i++)
{
    weekSelected[i] = true;
}

لا يمكنني تشغيله للعمل.


تحرير: كان يجب أن أذكر أنني أستخدم VS2008 مع .NET 2.0 (لذلك لن يعمل التعداد).

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

المحلول

bool[] weekSelected = Enumerable.Range(0, 5).Select(i => true).ToArray();

تحرير: إذا لم تتمكن من استخدام التعداد ، فقد تتمكن من استخدام ملف Bitarray:

BitArray bits = new BitArray(count, true);

ثم انسخ إلى صفيف حسب الحاجة:

bool[] array = new bool[count];
bits.CopyTo(array, 0);

نصائح أخرى

إذا كنت تستخدم .NET 2.0 ، فإن استخدام الحلقة هو الطريقة الصحيحة للقيام بذلك. لن أغيره.


الإجابة الأصلية.

إعلان النوع الخاص بك خطأ. جرب هذا:

bool[] weekSelected = new bool[] { true, true, true, true, true };

يمكنك أيضًا القيام بذلك لتجنب تكرار نفسك:

bool[] weekSelected = Enumerable.Repeat(true, 5).ToArray();

لاحظ أن هذا ليس فعالًا مثل حلقة ، ولكن إذا قلت 100 قيم وأداء غير حاسم ، فهذا أكثر إيجازًا من الحلقة وأقل كتابة من { true, true, true, ... }.

يجب أن يكون هذا ما تبحث عنه:

bool[] weekSelected = Enumerable.Repeat<bool>(true, weeks).ToArray();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top