0Pricing
C# Academy · درس

النوع Range والعامل ..

استخرجوا شرائح باستخدام تعبيرات النطاق

النوع Range والعامل .. درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 4 دروس في المجموع.

التعرّف على نوع Range

يصف System.Range جزءًا من تسلسل باستخدام Index للبداية وآخر للنهاية. وهو يتكامل تمامًا مع معامل النطاق .. للتعبير عن التسلسلات الفرعية.

using System;

Range r = 1..3;
Console.WriteLine(r.Start + ".." + r.End); // 1..3

المعامل .. (النطاق)

ينشئ معامل النطاق a..b كائن Range يبدأ من الفهرس a (بشكل شامل) وينتهي عند الفهرس b (بشكل حصري). لذلك يغطي 1..3 الموضعين 1 و2.

using System;

int[] data = { 10, 20, 30, 40, 50 };
int[] slice = data[1..3];
Console.WriteLine(string.Join(",", slice)); // 20,30

البداية شاملة والنهاية حصرية

تحاكي النهاية الحصرية طريقة عمل حلقات for؛ إذ يساوي عدد العناصر end - start. ويُنتج النطاق 2..5 ثلاثة عناصر.

using System;

int[] data = { 0, 1, 2, 3, 4, 5, 6 };
int[] slice = data[2..5];
Console.WriteLine(slice.Length);          // 3
Console.WriteLine(string.Join(",", slice)); // 2,3,4

النطاقات المفتوحة من أحد الطرفين

يمكنكم حذف أي حد من الحدين. يعني ..3 «من البداية حتى 3»، ويعني 2.. «من 2 حتى النهاية». أما .. وحده فينسخ التسلسل بأكمله.

using System;

int[] d = { 10, 20, 30, 40, 50 };
Console.WriteLine(string.Join(",", d[..3])); // 10,20,30
Console.WriteLine(string.Join(",", d[2..])); // 30,40,50
Console.WriteLine(string.Join(",", d[..]));  // 10,20,30,40,50

النطاقات مع الفهارس المحسوبة من النهاية

اجمعوا بين .. و^ للاقتطاع نسبةً إلى النهاية. يعني ^2.. «العنصرين الأخيرين».

using System;

int[] d = { 1, 2, 3, 4, 5 };
Console.WriteLine(string.Join(",", d[^2..]));  // 4,5
Console.WriteLine(string.Join(",", d[..^1]));  // 1,2,3,4 (drop last)

Range كقيمة مخزّنة

إن Range قيمة يمكنكم تسميتها وإعادة استخدامها مع مجموعات مختلفة تتبع اصطلاح الطول نفسه.

using System;

Range middle = 1..^1; // drop first and last
int[] a = { 0, 1, 2, 3, 4 };
Console.WriteLine(string.Join(",", a[middle])); // 1,2,3

‏Range.GetOffsetAndLength

لحل نطاق بالاستناد إلى طول ملموس، استدعوا GetOffsetAndLength(length). إذ يعيد إزاحة البداية وطول الجزء، ويتولى معالجة الفهارس المحسوبة من النهاية نيابةً عنكم.

using System;

Range r = ^3..^1;
var (offset, length) = r.GetOffsetAndLength(5);
Console.WriteLine(offset + " " + length); // 2 2

‏Range.All

تساوي الخاصية الساكنة Range.All التعبير ..، وتحدد التسلسل بأكمله. وهي مفيدة عند تمرير النطاقات كوسائط.

using System;

Range whole = Range.All;
int[] d = { 9, 8, 7 };
Console.WriteLine(string.Join(",", d[whole])); // 9,8,7

إنشاء Range صراحةً

إلى جانب استخدام المعامل، يمكنكم استدعاء الباني أو أسلوبي المصنع Range.StartAt وRange.EndAt لمزيد من الوضوح.

using System;

Range a = new Range(1, 3);
Range b = Range.StartAt(2);
Range c = Range.EndAt(2);
Console.WriteLine(a + " | " + b + " | " + c);

النطاقات الفارغة وغير الصالحة

ينتج النطاق الذي تتساوى بدايته ونهايته جزءًا فارغًا. أما النطاق الذي تقع بدايته بعد نهايته (بعد الحل) فيؤدي إلى استثناء عند تنفيذ الاقتطاع.

using System;

int[] d = { 1, 2, 3, 4 };
Console.WriteLine(d[2..2].Length); // 0 (empty)
try { var _ = d[3..1]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("invalid range"); }

جمع الأجزاء معًا

تجعل النطاقات معالجة النصوص والمصفوفات أكثر اختصارًا. نقتطع هنا نافذة من منتصف مصفوفة من دون أي حساب للفهرس.

using System;

int[] readings = { 5, 7, 9, 11, 13, 15 };
int[] window = readings[1..^1];
Console.WriteLine(string.Join(",", window)); // 7,9,11,13

تحقق سريع

تأكدوا من فهمكم لدلالات معامل النطاق.

مراجعة

تعلّمتم أن System.Range يصف جزءًا باستخدام معامل ...

  • البداية شاملة والنهاية حصرية: العدد = end - start.
  • الحدود اختيارية: ..3 و2.. و...
  • يمكن الجمع بين .. و^ للاقتطاع من النهاية.
  • يحل GetOffsetAndLength(length) النطاق إلى أرقام ملموسة.

الأسئلة الشائعة

هل درس «النوع Range والعامل ..» مجاني؟

نعم — نص درس «النوع Range والعامل ..» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 4 دروس في المجموع.

ماذا ستتعلم في «النوع Range والعامل ..»؟

استخرجوا شرائح باستخدام تعبيرات النطاق تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟

لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «النوع Range والعامل ..»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟

نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. النوع Index والعامل ^
  2. النوع Range والعامل ..
  3. النطاقات مع المصفوفات والسلاسل النصية
  4. الأنواع المخصّصة الداعمة للنطاقات
← العودة إلى C# Academy