السلام عليكم
وأهلا بكم،،
هل ترغب في أن تحصل على أكثر من قيمة من أكثر من مجموعة باستخدام تعليمة foreach واحدة؟ لنقل أنه لديك مجموعات (مصفوفتان) وترغب باستخدام حلقة foreach واحدة لمعالجة كلا المصفوفتين؟
الحل بسيط جدا ففي دوت نت الإصدار الرابع قد تم إضافة تابع ملحق جديد يدعى Zip. باختصار وظيفة التابع هو الدمج بين مجموعتين وذلك من خلال توفير العنصر ومقابله من كلا المجموعتين حسب الدليل index الحالي.
طبعا اذا كان كلا المجموعتين ذات بعد متساو فلا بأس أما إن لم يكونا كذلك فإن التابع سوف يتوقف عند الوصول لآخر عنصر من أحد المجموعتين.
لاحظ المثال التالي:
مثال سي شارب |
|
var numbersInWords = new[] { "One", "Two", "Three" }; var numbers = new int[] { 1, 2, 3 };
foreach(var item in numbers.Zip(numbersInWords, (n, nw) => new { Number = n , Word = nw})) { Console.WriteLine($"{item.Number}: {item.Word}"); } |
|
نفذ البرنامج السابق لتحصل على:
ناتج خرج تنفيذ الشيفرة السابقة |
PS C:\Sample> dotnet run 1: One 2: Two 3: Three |