C# Switch (Tanlash Operatori)

switch operatori: C# tilida tanlash operatori - ko'p yo'nalishli dasturlarni tarmoqqa ajratish imkonini beruvchi switch operatoridir. Binobarin, ushbu operator dasturning keyingi bajarilishi uchun bir nechta muqobil variantlardan birini tanlash imkonini beradi. Garchi ko'p yo'nalishli testlar bir qator ichki o'rnatilgan if iboralari bilan amalga oshirilishi mumkin bo'lsa-da, ko'p hollarda switch operatoridan foydalanish samaraliroq bo'ladi. Ushbu operator quyidagicha ishlaydi. Ifodaning qiymati belgilangan ro'yxatdagi tanlov konstantalari bilan ketma-ket taqqoslanadi. Tanlov shartlaridan biri bilan moslik topilishi bilanoq, ushbu shart bilan bog'liq bo'lgan gaplar ketma-ketligi bajariladi. Quyida switch iborasining umumiy shakli keltirilgan.

	switch (ifoda)
	{
	case konstanta1:
	amallar ketma-ketligi
	break;
	case konstanta2:
	amallar ketma-ketligi
	break;
	case konstanta3:
	amallar ketma-ketligi
	break;
	default:
	amallar ketma-ketligi
	break;
	}

Switch operatoridagi ko'rsatilgan ifoda butun son turi (char, bayt, short yoki int), sanab o'tilgan yoki satr bo'lishi kerak. O'zgaruvchi nuqta kabi boshqa turdagi ifodalarga switch operatorida ruxsat berilmaydi. Ko'pincha, switch iborasini boshqaruvchi ifoda oddiygina bitta o'zgaruvchiga tushadi. Bundan tashqari, tanlash konstantalari ifoda turiga mos keladigan turdagi bo'lishi kerak. Bitta switch operatorida bir xil qiymatga ega bo'lgan ikkita tanlash konstantasiga ega bo'lishga yo'l qo'yilmaydi.

Agar tanlov konstantalarining hech biri belgilangan ifodaga mos kelmasa, default bo‘limdagi gaplar ketma-ketligi bajariladi. default bo’limi ixtiyoriy. Agar u yo'q bo'lsa va ifoda tanlov shartlarining birortasiga mos kelmasa, u holda hech qanday amal bajarilmaydi. Agar tanlash shartlaridan biri bilan mos keladigan bo'lsa, u holda bu shart bilan bog'liq bo'lgan operatorlar break operatorigacha bajariladi.

Bitta case bo’limi bilan bog'langan operatorlar ketma-ketligini keyingi case qismiga o'tkazish xato hisoblanadi, chunki C# dastur oqimini boshqarishni o‘tkazishda “muvaffaqiyatsizliklarga” yo‘l qo‘ymaslik qoidasiga amal qilishi kerak. Shuning uchun ham switch operatorining har bir holat bo‘limidagi amallar ketma-ketligi break operatori bilan tugaydi. default qismidagi operatorlar ketma-ketligi ham "muvaffaqiyatsizlik" dan xoli bo'lishi kerak, shuning uchun u ham break operatori bilan tugatiladi.

Muvaffaqiyatsizlik” bir case qismining boshqasiga o‘tishini oldini olsa-da, quyidagi dastur misolida ko‘rsatilganidek, ikki yoki undan ortiq case qismlariga teglar yordamida bir xil kod ketma-ketligiga murojaat qilishlari mumkin.

	// "Muvaffaqiyatsiz" bo'sh case qismlariga misol.
	using System;
	class EmptyCasesCanFall
	{
	static void Main()
	{
	int i;
	for (i = 1; i < 5; i++)
	switch (i)
	{
	case 1:
	case 2:
	case 3:
	case 4:
	Console.WriteLine("i teng 1, 2,3 yoki 4");
	break;,
	case 5:
	Console.WriteLine("i teng 5");
	break;
	}
	}
	}
i teng 1, 2,3 yoki 4 i teng 1, 2,3 yoki 4 i teng 1, 2,3 yoki 4 i teng 1, 2,3 yoki 4

Bitta switch operatori boshqa, tashqi switch operatorining operatorlari ketma-ketligining bir qismi bo'lishi mumkin. Va bunday switch operatori ichki o'rnatilgan deb ataladi. switch ichki va tashqi operatorlarining tanlov konstantalari hech qanday ziddiyatga olib kelmasdan umumiy qiymatlarni o'z ichiga olishi mumkin. Misol uchun, quyidagi kod parchasi juda mos keladi.

switch (ch1)
{
case 'A':
Console.WriteLine("Bu qism switch tashqi operatorining A-qismidir.");
switch (ch2)
{ case 'A':
Console.WriteLine("Bu tarmoq switch ichki operatorining A-qismidir");
break;
case 'В': // ...} // switch ichki operatorining oxiri
break;
case 'В': // ...

Nol bo‘lmagan butun sonlar ketma ketligi berilgan. Uning tugaganlik simvoli (alomati) nol soni. Ketma ketlikdagi (noldan farqli) sonlar miqdori aniqlansin.