Mavzu: C# dasturlash asoslari. Reja: Kirish Asosiy qism



Yüklə 47,12 Kb.
səhifə4/5
tarix28.04.2023
ölçüsü47,12 Kb.
#104017
1   2   3   4   5
7 - mavzu

enum sanalma tiplar

Primitiv ma'lumotlar turlaridan tashqari, C# dasturlash tilida enum yoki enumeration kabi tur mavjud . Enumlar mantiqiy bog'liq konstantalar to'plamini ifodalaydi.
Enum bayonoti yordamida sanab e'lon qilinadi :
enum название_перечисления
{
// dastur kodi
Birinchi amal,
Ikkinchi amal,
.......
N - amal
}
Operatordan enumkeyin sanab nomi keladi. Va keyin ro'yxatga olish konstantalari vergul bilan ajratilgan jingalak qavslar ichida keltirilgan.
Keling, eng oddiy ro'yxatni aniqlaymiz:
enum DayTime
{
Morning,
Afternoon,
Evening,
Night
}
DayTime ro'yxati bu erda aniqlanadi va to'rtta qiymatga ega: Morning, Afternoon, Evening va Night.
Har bir ro'yxatga olish haqiqatan ham yangi ma'lumotlar turini belgilaydi, uning yordamida biz, xuddi har qanday boshqa turdagi kabi, o'zgaruvchilarni, konstantalarni, usul parametrlarini va hokazolarni aniqlashimiz mumkin. Sanoqni ifodalovchi oʻzgaruvchi, doimiy va usul parametrining qiymati sanab oʻtilgan konstantalardan biri boʻlishi kerak, masalan:1
const DayTime dayTime = DayTime.Morning;
Bundan tashqari, dasturda biz har qanday boshqa kabi o'zgaruvchilar/konstantalar/parametrlardan foydalanishimiz mumkin:
DayTime dayTime = DayTime.Morning;
if(dayTime == DayTime.Morning)
Console.WriteLine("Доброе утро");
else
Console.WriteLine("Привет");
enum DayTime
{
Morning,
Afternoon,
Evening,
Night
}
Ko'pincha, ro'yxatga olish o'zgaruvchisi ba'zi harakatlar bajarilishiga qarab davlat do'koni vazifasini bajaradi:
DayTime now = DayTime.Evening;
PrintMessage(now); // Hayirli kech
PrintMessage(DayTime.Afternoon); // Hayirli kun
PrintMessage(DayTime.Night); // Hayirli tun
void PrintMessage(DayTime dayTime)
{
switch (dayTime)
{
case DayTime.Morning:
Console.WriteLine("Hayirli tong");
break;
case DayTime.Afternoon:
Console.WriteLine("Hayirli kun");
break;
case DayTime.Evening:
Console.WriteLine("Hayirli oqshom");
break;
case DayTime.Night:
Console.WriteLine("Hayirli tun");
break;
}
}
enum DayTime
{
Morning,
Afternoon,
Evening,
Night
}
Bu erda usul PrintMessage()DayTime sanab turining qiymatini parametr sifatida oladi va shu qiymatga qarab ma'lum bir castni chiqaradi.
Yana bir misol:
DoOperation(10, 5, Operation.Add); // 15
DoOperation(10, 5, Operation.Subtract); // 5
DoOperation(10, 5, Operation.Multiply); // 50
DoOperation(10, 5, Operation.Divide); // 2
void DoOperation(double x, double y, Operation op)
{
double result = op switch
{
Operation.Add => x + y,
Operation.Subtract => x - y,
Operation.Multiply => x * y,
Operation.Divide => x / y
};
Console.WriteLine(result);
}
enum Operation
{
Add,
Subtract,
Multiply,
Divide
}
Bu arifmetik amallarni ifodalovchi Amaliyot ro'yxatini belgilaydi. Har bir operatsiya turi sanab o'tish konstantalaridan biri sifatida aniqlanadi. Shuningdek DoOperation(), parametr sifatida sanab doimiysi sifatida ikkita raqam va operatsiya turini oladigan va shu turga qarab switchkonstruksiyadan ma'lum bir operatsiya natijasini qaytaruvchi usul ham aniqlanadi.
Enum konstantalarining turi va qiymatlari
Enum konstantalari turga ega bo'lishi mumkin. Tur sanab o'tilgan nomdan keyin ko'rsatiladi va ikki nuqta bilan ajratiladi:
enum Time : byte
{
Morning,
Afternoon,
Evening,
Night
}
Sanoq turi butun son turini ifodalashi kerak (bayt, sbayt, qisqa, ushort, int, uint, uzun, ulong). Agar tur aniq ko'rsatilmagan bo'lsa, standart tur int bo'ladi.
Turi doimiylar ega bo'lishi mumkin bo'lgan qiymatlarga ta'sir qiladi. Odatiy bo'lib, ro'yxatdagi har bir elementga butun son qiymati beriladi, birinchi element 0, ikkinchisi 1 va hokazo. Masalan, yuqorida belgilangan DayTime ni oling:
DayTime now = DayTime.Morning;
Console.WriteLine((int) now); // 0
Console.WriteLine((int) DayTime.Night); // 3
enum DayTime
{
Morning,
Afternoon,
Evening,
Night
}
Enum doimiysining butun qiymatini olish uchun cast operatoridan foydalanishimiz mumkin:
(int) DayTime.Night // 3
Shu bilan birga, har bir konstanta ma'lum bir raqamga mos kelsa ham, biz unga raqamli qiymat bera olmaymiz:1
DayTime now = 2; // ! Xato
Bundan tashqari, birinchi elementning qiymatini belgilash orqali element qiymatlarini aniq belgilashingiz mumkin:
enum DayTime
{
Morning = 3,
Afternoon,
Evening,
Night
}
Ammo siz barcha elementlar uchun qiymatlarni aniq belgilashingiz mumkin:
enum DayTime
{
Morning = 2,
Afternoon = 4,
Evening = 8,
Night = 16
}
Bunday holda, sanab o'tish konstantalari bir xil qiymatlarga ega bo'lishi mumkin yoki hatto bitta konstantaga boshqa doimiyning qiymatini belgilashingiz mumkin:
enum DayTime
{
Morning = 1,
Afternoon = Morning,
Evening = 2,
Night = 2
}


  1. Yüklə 47,12 Kb.

    Dostları ilə paylaş:
1   2   3   4   5




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin