هل من الممكن استخدام أخصائيات الكائنات على منطقة؟
-
23-09-2019 - |
سؤال
هل من الممكن القيام بما يلي (على سبيل المثال تهيئة صفيف 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();