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:
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";