C# अकादमी · पाठ

switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण)

परंपरागत switch-return methods से switch expressions का अनुकरण करें, guard checks जोड़ें और runtime पर अनियंत्रित cases पकड़ने के लिए default throws का उपयोग करें।

पाठ 2, कुल 3 में से8 चरण

switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण), CoddyKit पर C# अकादमी का एक निःशुल्क पाठ है। यह 3 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह C# अकादमी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

योजना: switch का अनुकरण

लक्ष्य: C# 6 में आधुनिक switch expressions का अनुकरण करना।

  • क्लासिक switch से मान लौटाएँ
  • सुरक्षा जाँचों से पहले जाँच करें
  • सभी मामलों को सँभालने के लिए डिफ़ॉल्ट throw से तुरंत विफल हों

मान लौटाने वाला switch

मान लौटाने वाला स्विच स्विच-एक्सप्रेशन की तरह काम करता है। डिफ़ॉल्ट में अपवाद फेंकना अज्ञात मानों को पकड़ता है।

using System;

public enum Grade { A, B, C, D, F }

public class Program
{
  static string Describe(Grade g)
  {
    switch (g)
    {
      case Grade.A: return "Excellent";
      case Grade.B: return "Good";
      case Grade.C: return "Average";
      case Grade.D: return "Below average";
      case Grade.F: return "Fail";
      default: throw new ArgumentOutOfRangeException("g");
    }
  }

  public static void Main(string[] args)
  {
    Console.WriteLine(Describe(Grade.A));
    Console.WriteLine(Describe(Grade.F));
  }
}

गार्ड के माध्यम से “जब”

गार्ड-जाँचों (if) का उपयोग करके जब वाली शर्तों का अनुकरण करें। पहले इनपुट को मान्य करें, फिर सीमाओं के आधार पर शाखा चुनें।

using System;

public class Program
{
  // Emulate: switch(score) { case var s when s >= 90: ... } using pre-guards
  static string LabelScore(int score)
  {
    if (score < 0 || score > 100) throw new ArgumentOutOfRangeException("score");

    if (score >= 90) return "A";
    if (score >= 80) return "B";
    if (score >= 70) return "C";
    if (score >= 60) return "D";
    return "F";
  }

  public static void Main(string[] args)
  {
    Console.WriteLine(LabelScore(92)); // A
    Console.WriteLine(LabelScore(77)); // C
  }
}

Exhaustive सहायक

एक छोटा Exhaustive.Unhandled सहायक जोड़ें और उसे डिफ़ॉल्ट में कॉल करें। नया enum मान संभाला न जाने पर परीक्षण विफल हो जाएंगे।

using System;

public enum Status { New, Active, Closed }

public static class Exhaustive
{
  public static Exception Unhandled(object x)
  {
    return new InvalidOperationException("Unhandled case: " + x);
  }
}

public class Program
{
  static int ToHttp(Status s)
  {
    switch (s)
    {
      case Status.New: return 201;
      case Status.Active: return 200;
      case Status.Closed: return 410;
      default: throw Exhaustive.Unhandled(s);
    }
  }

  public static void Main(string[] args)
  {
    Console.WriteLine(ToHttp(Status.Active)); // 200
  }
}

गार्ड + प्रकार पर स्विच

पूर्व-गार्डों से हर शाखा के डेटा को मान्य करें, फिर विभेदक पर स्विच करें। यह केसों पर “जब” वाली संरचना को दर्शाता है।

using System;

public enum ShapeKind { Circle, Square }

public sealed class Shape
{
  public ShapeKind Kind;
  public double Radius; // for circle
  public double Side;   // for square
}

public class Program
{
  static double Area(Shape s)
  {
    if (s == null) throw new ArgumentNullException("s");

    // “when” guards (validate needed fields)
    if (s.Kind == ShapeKind.Circle && s.Radius < 0) throw new ArgumentException("Radius must be >= 0");
    if (s.Kind == ShapeKind.Square && s.Side < 0) throw new ArgumentException("Side must be >= 0");

    switch (s.Kind)
    {
      case ShapeKind.Circle: return Math.PI * s.Radius * s.Radius;
      case ShapeKind.Square: return s.Side * s.Side;
      default: throw new InvalidOperationException("Unhandled shape: " + s.Kind);
    }
  }

  public static void Main(string[] args)
  {
    Shape c = new Shape { Kind = ShapeKind.Circle, Radius = 2.0 };
    Console.WriteLine("Area circle = " + Area(c));
  }
}

सुझाव और संभावित समस्याएँ

सुझाव:

  • छोटी, मान लौटाने वाली विधियों को प्राथमिकता दें (एकल-ज़िम्मेदारी)
  • लापता केसों को जल्दी उजागर करने के लिए डिफ़ॉल्ट में अपवाद फेंकना बनाए रखें
  • स्विच से पहले गार्ड रखें; वे जब-शर्तों की तरह काम करते हैं

सर्वव्यापकता का अनुकरण

त्वरित जाँच: C# 6 में when वाले स्विच-एक्सप्रेशन जैसी सर्वव्यापी स्विच-हैंडलिंग का अनुकरण कैसे कर सकते हैं?

पुनरावलोकन

पुनरावलोकन: क्लासिक स्विच से मान लौटाएँ, “जब” के लिए गार्ड जोड़ें और लापता केसों को सामने लाने के लिए डिफ़ॉल्ट में अपवाद फेंकना बनाए रखें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ C# सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
93
पाठ
346

अक्सर पूछे जाने वाले प्रश्न

क्या “switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण)” पाठ निःशुल्क है?

हाँ—“switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण)” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और C# अकादमी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। C# अकादमी पाठ्यक्रम में कुल 3 पाठ शामिल हैं।

“switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण)” में मैं क्या सीखूँगा?

परंपरागत switch-return methods से switch expressions का अनुकरण करें, guard checks जोड़ें और runtime पर अनियंत्रित cases पकड़ने के लिए default throws का उपयोग करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C# अकादमी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या C# अकादमी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C# अकादमी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 3 में से 2वाँ पाठ है।

“switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण)” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस C# अकादमी पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर C# अकादमी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. is patterns; relational और logical patterns (C# 6 अनुकरण)
  2. switch expressions; when के साथ exhaustive checks (C# 6 अनुकरण)
  3. Discriminated unions (records) के साथ domain modeling — C# 6 अनुकरण
← C# अकादमी पर वापस जाएँ