Enum

Enum

enum — bu o’zgarmaslarni ifodalovchi maxsus “sinf” (qiymati o’zgarmaydigan yoki bir so’z bilan aytganda read-only o’zgaruvchilar). enum ni yaratish uchun enum kalit so’zidan foydalanamiz (interfeys yoki sinf o’rniga) va enum elementlari vergul bilan ajratib yoziladi:

enum ni yaratish uchun enum kalit so’zidan foydalanamiz (interfeys yoki sinf o’rniga) va enum elementlari vergul bilan ajratib yoziladi

Misol uchun:

    using System;
    namespace NewApplication
    {
        enum Level 
        {
          Low,
          Medium,
          High
        }
    }

    enum elementlariga nuqta sintaksisi bilan kirishingiz mumkin:

    Level myVar = Level.Medium;
    Console.WriteLine(myVar);
    a]:text-periwinkle-700 [&>a:hover]:text-periwinkle-800 [&>code]:bg-periwinkle-700/4 [&>code]:text-inherit [&>code]:shadow-none text-periwinkle-900 fill-periwinkle-700 stroke-periwinkle-700 dark:text-periwinkle-200 dark:[&>a]:text-periwinkle dark:[&>a:hover]:text-periwinkle-600 dark:[&>code]:bg-periwinkle-200/2 dark:[&>code]:text-inherit decoration-periwinkle-700/6 dark:decoration-periwinkle/6 dark:fill-periwinkle-400 dark:stroke-periwinkle-400 flip-heading-hash»>enum so’zi bu “enumerations” qisqartmasi bo’lib “maxsus sanab o’tilgan” degan ma’noni anglatadi.

    Siz enum kalit so’zidan Class ichida ham foydalana olasiz: Misol uchun:

    classProgram
    {
      enumLevel
      {
        Low,
        Medium,
        High
      }
    static void Main(string[] args)
    {
      Level myVar =Level.Medium;
      Console.WriteLine(myVar);
    }

    Console: Medium

    enum qiymatlari: Odatda, enum ning birinchi qiymati doim “0” dan boshlanadi va shu tariqa ikkinchisi “1” bo’lib davom etadi…

    Elementdan butun qiymat olish uchun elementni int ga o’zgartirishimiz (convert) kerak: Misol uchun

    enumMonths
    {
      January,// 0
      February,// 1
      March,// 2
      April,// 3
      May,// 4
      June,// 5
      July// 6}
    static void Main(string[] args)
    {
      int myNum =(int)Months.April;
      Console.WriteLine(myNum);
    }

    Console: 3

    Shuningdek, siz o’zingizni enum qiymatlaringizni belgilashingiz ham mumkin va keyingi elementlar raqamni mos ravishda yangilaydi. Misol uchun:

    enumMonths
    {
      January,// 0
      February,// 1
      March=6,// 6
      April,// 7
      May,// 8
      June,// 9
      July// 10}
    staticvoidMain(string[] args)
    {
      int myNum =(int)Months.April;
      Console.WriteLine(myNum);
    }

    Console: 7

    enum ko’pincha mos qiymatlarni tekshirish uchun switch ichida foydalaniladi. Misol uchun

    enumLevel
    {
      Low,
      Medium,
      High
    }
    static void Main(string[] args){
    Level myVar =Level.Medium;
    switch(myVar)
    {
      caseLevel.Low:
      Console.WriteLine("Low level");
      break;
      caseLevel.Medium:
      Console.WriteLine("Medium level");
      break;
      caseLevel.High:
      Console.WriteLine("High level");
      break;
    }

    Console: Medium level

    enum nima uchun va qachon ishlatiladi?

    Oy kunlari, kunlar, ranglar, kartalar toʻplami va h.k. kabi oʻzgarmas qiymatlarga ega boʻlganingizda enum dan foydalaning.

    Enum ni tushinish uchun quyidagi misolda ko’raylik Misol: Bizga hafta kunlari (1,2…7)gacha raqamlar bilan raqamlab berilgan bo’lsin bizga hafta raqami berilsa hafta kunini chiqaradigan dastur qilishimiz kerak. Bu masalani birinchi biz bilgan switch case da hal qilib ko’raylik.

    using System;
    namespace switch_case
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Hafta raqamini kiriting :");
                int n=int.Parse(Console.ReadLine());
                switch(n)
                {
                    case 1:Console.WriteLine($"Dushanba");break;
                    case 2:Console.WriteLine($"Seshanba");break;
                    case 3:Console.WriteLine($"Chorshanba");break;
                    case 4:Console.WriteLine($"Payshanba");break;
                    case 5:Console.WriteLine($"Juma");break;
                    case 6:Console.WriteLine($"Shanba");break;
                    case 7:Console.WriteLine($"Yakshanba");break;
                }
            }
        }
    }

    Endi bu masalani enum bilan hal qilib ko’ramiz

    using System;
    namespace enum1
    {
        class Program
        {
            public enum Kun
            {
                Dushanba=1, Seshanba=2, Chorshanba=3,Payshanba=4, Juma=5, Shanba=6, Yakshanba=7
            };
            static void Main()
            {
                Console.WriteLine("Kun raqamini kiriting =>");
                
                int n= int.Parse(Console.ReadLine());
                
                System.Console.WriteLine(Enum.GetName(typeof(Kun),n));
                
            }
        }
    }

    Enum orqali kodni uzunligi ancha qisqardi.

    Quyidagi hollarda enum elementlarga avtomatik qiymat beradi.

    using System;
    namespace _enum
    {
        class Program
        {
            public enum ranglar
            {
                qizil,  //0
                sariq,  //1
                yashil = 4,
                kok,    //5
                qora    //6
            };
            static void Main(string[] args)
            {
                string[] rang = Enum.GetNames(typeof(ranglar));
                foreach(var r in rang)  // bu yerda ranglar nomi chop etilmoqda
                {
                    Console.WriteLine(r);
                }
                int[] values =(int[]) Enum.GetValues(typeof(ranglar));
                foreach(var m in values) //bu yerda esa qiymati
                {
                    Console.WriteLine(m);
                }
            }
        }
    }

    Qora oynada quyidagicha natija chiqadi.

    qizil
    sariq
    yashil
    kok
    qora
    0
    1
    4
    5
    6

    Biz enum dan foydalanib avtomobillar narxi chiqaruvchi dastur tuzib ko’rayik.

    using System;
    namespace car
    {
        class Program
        {
            enum mashinalar
            {
                Nexia3 = 87000000,
                Gentira = 100000000,
                Cobalt = 97000000,
                Spark=76000000,
                Damas=66000000,
                Malibu=275000000,
                Kaptiva=260000000,
            }
            static void Main(string[] args)
            {
                Console.WriteLine(mashinalar.Malibu+"ning narxi");
                int narxi = (int)mashinalar.Malibu;
                Console.WriteLine(narxi + " so'm");
            }
        }
    }

    Qora oynadagi natija:

    Malibuning narxi
    275000000 so'm

    Enum elementlarini qiymatiga qarab jop etish.

    using System;
    namespace dasturlash
    {
        class Program
        {
            enum dasturlash_tillari
            {
                Csharp=1,
                C,          //2
                Cplasplas,  //3
                Go,         //4
                Python,     //5
                Java,       //6
                JavaScript, //7
                Kotlin,      //8        
            }
            static void Main(string[] args)
            {
                int i = 1, j = 4, k = 5, f = 8;
                dasturlash_tillari a1, b1, c1, d1;
                a1 = (dasturlash_tillari)i;
                b1 = (dasturlash_tillari)j;
                c1 = (dasturlash_tillari)k;
                d1 = (dasturlash_tillari)f;
                Console.WriteLine(a1);
                Console.WriteLine(b1);
                Console.WriteLine(c1);
                Console.WriteLine(d1);
            }
        }
    }

    Qora oynadagi natija

    Csharp
    Go
    Python
    Kotlin

    Dasturlash
    Enum