DEV Community

Nuriddin
Nuriddin

Posted on • Edited on

Constant pattern haqida...

C# 7.0 dan boshlab, switchga parametr qilib berilgan qiymatni belgilangan konstantaga teng yoki yo'qligini tekshirish uchun constant patterndan foydalanishimiz mumkinakan:

public static decimal GetGroupTicketPrice(int visitorCount) => visitorCount switch
{
    1 => 12.0m,
    2 => 20.0m,
    3 => 27.0m,
    4 => 32.0m,
    0 => 0.0m,
    _ => throw new ArgumentException($"Not supported number of visitors: {visitorCount}", nameof(visitorCount)),
};
Enter fullscreen mode Exit fullscreen mode

Constant patternda switchga parametr qib berilgan qiymatni mamnaqa tipla bilan solishtirish mumkinakan anaqqisa 👇:

  • Integer yoki floating-point sonlar
  • Char yoki a string literal
  • Boolean qiymat true yoki false
  • Enum value
  • e'lon qilingan const maydoni yoki mahalliy nomi
  • null

tepadigi misoldaka qilib ko'rsataman:

  public static decimal GetGroupTicketPrice(object visitorCount) => visitorCount switch
    {
         1 => 15.0m,         // int qiymat bilan solishtirvotti
        "string" => 12.0m,   // string qiymat bilan solishtirvotti
        'a' => 20.0m,        // char qiymat bilan solishtirvotti
        true => 27.0m,       // bool qiymat bilan
        "enum" => 32.0m,     // enum qiymat 
        null => null,        // null bilan
        0 => 0.0m,           // buyam int qiymat bn soliwtirvotti
        _ => throw new ArgumentException($"Not supported number of visitors: {visitorCount}", nameof(visitorCount)),
    };
Enter fullscreen mode Exit fullscreen mode

Constant patterndan nullni tekshirishda ham foydalaniladi:

if (input is null)
{
    return;
}
Enter fullscreen mode Exit fullscreen mode

C# 9.0 dan boshlab, quyidagi misolda ko'rsatilgandaka, null bo'lmaganni tekshirish uchun negated null qilib tekwiriladi:

if (input is not null)
{
    // ...
}
Enter fullscreen mode Exit fullscreen mode

Uncha chunmagan bo'sela mamyaqqa o'tib ko'rvosela bo'ladi constant pattern!

Top comments (0)