C# O`zgarmaslar

O`zgarmaslar qiymati dastur ishlash davomida o`zgarmaydigan o`zgaruvchilar. Dastur ishlash davomida o`garuvchining qiymatini o`zgartirmasdan saqlashga to`g`ri keladi.Masalan Pi sonini o`zgarmas sifatida saqlash maqsadga muvofiq. Bu uchun Pi o`zgarmas sifatida e`lon qilinishi kerak:

const double Pi= 3.1415926535897932384626433832795;

C# da 3 turdagi o`zgarmaslar mavjud: literalli, simvolli va to`plamli o`zgarmaslar. Quyidagi misolni ko`ramiz:

x = 100;

100 qiymati bu literalli o`zgarmas. 100 ning qiymati hamma vaqt 100. 100 ga yangi qiymat o`zlashtirish mumkin emas. 100 ni hech qachon 55 qiymatini ko`rsatadigan qilish mumkin emas. Simvolli o`zgarmaslar o`zgarmas qiymatga nom beradi.

Simvolli o`zgarmaslarni const kalit so`zi orqali e`lon qilinadi va quyidagi sintaksis qo`llaniladi: const identifikator tipi = qiymat;

Har bir o`zgarmas e`lon qilish vaqtida qiymat o`zlashtirilishi shart va uning qiymati dastur bajarilishi davomida o`zgartirilmasligi kerak: const double Pi= 3.1415926535897932384626433832795; Pi simvolli o`zgarmas.

 namespace UzbekDevs
{
   internal class Program
   {
       static void Main(string[] args)
       {
           const double pi = 3.1415926535897932384626433832795;
           const double g = 9.81; //gravitasiya doimiysi 
           Console.WriteLine("Pi soni: {0}", pi);
           Console.WriteLine("gravitasiya doimiysi: {0}", g);
           Console.ReadKey();
       }
   }
}

      Dastur ishining natijasi quyidagicha:

Pi soni: 3.1415926535897932384626433832795 gravitasiya doimiysi: 9.81 Simvolli o`zgarmaslar literalli o`zgarmaslar kabi bir vazifani bajaradi faqat ulardan farqi u nomga ega bo`lib, nomidan qanday maqsadda ishlatilayotganini aniqlash mumkin.

To`plam o`zgarmaslar

 To`plam o`zgarmaslar kuchli alternativ o`zgarmaslar hisoblanadi. U bir nechta nomlangan o`zgarmaslardan iborat. Faraz qilay bizda bir necha kishinig tug`ilgan yili haqida ma`lumot bor. Dasturda ularni o`zgarmas sifatida e`lon qilish uchun quyidagicha yozish kerak:

const int maryBirthday = 955; 
const int ivanBirthday = 1980; 
const int pavelBirthday = 1976; 

O`zaro bog`lanmagan 3 ta o`zgarmas hosil bo`ldi. Ular orasida mantiqiy bog`lanishni hosil qilish uchun to`plam o`zgarmaslardan foydalaniladi. U quyidagicha bo`ladi:

enum FriendsBirthday 
{ 
maryBirthday = 1955; 
ivanBirthday = 1980; 
pavelBirthday = 1976; 
} 

Har bir to`plam o`zgarmasning o`z tipi bo`ladi. Bu tiplar butun sonli tiplar(int, short, long,…), char tipi bulardan mustasno. Bu ko`rsatilgan tip har bir o`zgarmas uchun tegishli bo`ladi. Agar tip ko`rsatilmagan bo`lsa, unda int deb qabul qilinadi. Yuqoridagi misolda shunday qilingan.

 enum FriendsBirthday : long { maryBirthday = 1955; ivanBirthday = 1980; pavelBirthday = 1976; } 

Agar to`plam o`zgarmasning o`zgarmaslar qiymati ko`rsatilmagan bo`lsa, unda ular mos ravishda 0 dan boshlab qiymat qabul qiladi va qiymat bittadan oshib boradi:

enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

Bunda Sat=0, Sun=1,…, Fri=6 qiymat qabul qiladi.

      Agarda enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; bo`lsa, unda Sat=1, Sun=2,…, Fri=7 qiymat qabul qiladi. Agarda enum Days {Sat=1, Sun, Mon=10, Tue, Wed, Thu, Fri}; bo`lsa, unda Sat=1, Sun=2, Mon=10,Tue=11,…, Fri=14 qiymat qabul qiladi. To`plam o`zgarmasning umumiy ko`rinishi:

[attribut] [modifikator] enum identifikator [:tip] {o`zgarmaslar ro`yxati } [;]

[] qavs bo`lishi yoki bo`lmasligi ham mumkin degan ma`noni bildiradi.

To`plam o`zgarmasga murojaat quyidagicha amalga oshiriladi:

Days.Sat yani identifikator.o`zgarmas

To`g`ridan-to`g`ri o`zgarmasning qiymatini olish mumkin emas. Bu uchun avval enum tipini butun tipga o`girish kerak:

 namespace UzbekDevs
{
   internal class EnumTest
   {
       enum Range : long { Max = 2147483648L, Min = 255L }
       static void Main(string[] args)
       {
           long x = (long)Range.Max;
           long y = (long)Range.Min;
           Console.WriteLine("Max = {0}", x);
           Console.WriteLine("Min = {0}", y);
           Console.ReadKey();
           
 
       }
   }
}

Natija:

Max = 2147483648 Min = 255

Modifikator va atributlar haqida keyin to`xtalamiz.

Satrli o`zgarmaslar

Satrli o`zgarmasni e`lon qilish uchun satrni ("My string") ikkitalik qo`htirnoqqa olish kerak. Buni o`zgaruvchilarga qiymat berishda, funksiyaga parametr sifatida berishda foydalanish mumkin:

System.Console.WriteLine("Pi soning qiymati: {0}", Pi); 
string mystring="Hello";