break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية
استخدم break وcontinue بطريقة صحيحة، وافهم سبب عدم التوصية بـ goto، وطبّق قواعد النطاق بأمان، واختر بين الاستثناءات وفحوصات الحماية.
break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية درس مجاني في C# Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في C# Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة C# Academy 3 دروس في المجموع.
نظرة عامة على الدرس
الهدف: التحكم في تدفق الحلقة باستخدام break/continue، وتجنب goto، ومراعاة نطاق المتغير، والاختيار بين الاستثناءات وفحوصات الحماية.
استخدام break عمليًا
يخرج break من الحلقة فورًا.
using System;
public class Program
{
public static void Main(string[] args)
{
for (int i = 1; i <= 10; i = i + 1)
{
if (i == 4)
{
Console.WriteLine("Stop at 4");
break; // exit loop completely
}
Console.WriteLine("i = " + i);
}
}
}
استخدام continue عمليًا
يتخطى continue التكرار الحالي وينتقل إلى التكرار التالي.
using System;
public class Program
{
public static void Main(string[] args)
{
for (int i = 1; i <= 5; i = i + 1)
{
if (i % 2 == 0)
{
continue; // skip even numbers
}
Console.WriteLine("Odd: " + i);
}
}
}
تجنب goto
ينشئ goto تدفقًا متشابكًا يصعب صيانته؛ استخدم الحلقات المنظمة بدلًا منه (while/for/foreach).
using System;
public class Program
{
public static void Main(string[] args)
{
// Goto works but harms readability; prefer structured loops.
int i = 0;
start:
i = i + 1;
Console.WriteLine("i = " + i);
if (i < 3)
{
goto start; // avoid using goto in real code
}
// Prefer: while loop (clear intent)
int j = 0;
while (j < 3)
{
j = j + 1;
Console.WriteLine("j = " + j);
}
}
}
أساسيات النطاق
يُحدَّد النطاق بواسطة القوسين { }. صرّح عن المتغيرات بالقرب من موضع استخدامها، وتجنب إعادة استخدام الأسماء في الكتل المتداخلة.
using System;
public class Program
{
public static void Main(string[] args)
{
int x = 10; // outer scope
if (x > 0)
{
int y = 5; // inner scope
Console.WriteLine("x + y = " + (x + y));
}
// y is not visible here; this would not compile:
// Console.WriteLine(y);
// Shadowing (avoid reusing names in nested scopes)
int value = 1;
{
int valueInner = 2; // use a new name instead of shadowing
Console.WriteLine("value=" + value + ", inner=" + valueInner);
}
}
}
أساسيات التشخيص
استخدم فحوصات الحماية للإدخال غير الصالح المتوقع، واستخدم الاستثناءات للحالات الاستثنائية.
using System;
public class Program
{
// Guard check: return a bool and an out parameter (no exception on normal invalid input).
public static bool TryDivide(int x, int y, out int result)
{
if (y == 0)
{
result = 0;
return false; // guard fail
}
result = x / y;
return true;
}
// Exceptional state: throw when something truly exceptional happens.
public static int PriceWithTax(int price, int ratePercent)
{
if (price < 0)
{
throw new ArgumentOutOfRangeException("price");
}
if (ratePercent < 0 || ratePercent > 100)
{
throw new ArgumentOutOfRangeException("ratePercent");
}
return price + (price * ratePercent / 100);
}
public static void Main(string[] args)
{
int r;
bool ok = TryDivide(10, 0, out r);
Console.WriteLine("TryDivide ok=" + ok + " result=" + r);
try
{
int total = PriceWithTax(100, 18);
Console.WriteLine("Total=" + total);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
break مقابل continue
مراجعة
مراجعة: استخدم break للخروج من الحلقة وcontinue لتخطي تكرار؛ تجنب goto؛ وأبقِ المتغيرات ضمن النطاق المناسب؛ وفضّل فحوصات الحماية للإدخال غير الصالح المتوقع، والاستثناءات للحالات الاستثنائية.
الأسئلة الشائعة
هل درس «break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية» مجاني؟
نعم — نص درس «break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة C# Academy، انتقل إلى CoddyKit PRO. تتضمن دورة C# Academy 3 دروس في المجموع.
ماذا ستتعلم في «break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية»؟
استخدم break وcontinue بطريقة صحيحة، وافهم سبب عدم التوصية بـ goto، وطبّق قواعد النطاق بأمان، واختر بين الاستثناءات وفحوصات الحماية. تتمرن على C# Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ C# Academy؟
لا تُشترط خبرة سابقة. C# Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.
كم من الوقت يستغرق درس «break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس C# Academy هذا؟
نعم. كل درس في C# Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- if/else وswitch (التقليدية) والحلقات: for وwhile وdo وforeach
- break وcontinue؛ goto (تجنّبه)؛ النطاق؛ الاستثناءات مقابل فحوصات الحماية
- التشخيص البسيط: الاستثناءات مقابل فحوصات الحماية