CodeGym /Kurslar /C# SELF /Konstantlar və var açar sözü

Konstantlar və var açar sözü

C# SELF
Səviyyə , Dərs
Mövcuddur

1. Konstantlar

Konstant — bu elə bir "möcüzəvi" dəyişəndir ki, onun dəyərini elan edəndən sonra dəyişmək olmaz (və lazım da deyil!). Təsəvvür elə, fincanının üstündə "Yalnız çay" yazılmış superyapışqan bir stiker var. O stiker yapışandan sonra artıq çayı qəhvə ilə dəyişə bilməzsən (ən azından C# çərçivəsində).


const int DaysInWeek = 7;
const string HelloMessage = "Xoş gəlmisiniz!";
Konstantların elan olunması

Bu nümunələrdə DaysInWeek həmişə 7 olacaq, HelloMessage isə daim salamlayıcı olacaq. Konstantanın dəyəri təyin olunduqdan sonra onu dəyişmək mümkün deyil.

Konstantlar nə üçün lazımdır?

  • Kodun aydınlığı: sən const double Pi = 3.14159; görəndə, heç bir şübhə olmur ki, bu konstantadır, proqramın ortasında kimsə dəyişə biləcəyi dəyişən deyil.
  • Təhlükəsizlik: heç kim (hətta bir neçə ay sonra özün də) təsadüfən konstantanın dəyərini dəyişə bilməyəcək.
  • Performans: C# kompilyatoru konstantanın dəyərini birbaşa çağırılan yerlərə qoyur, ona görə proqram bir az daha sürətli işləyir.

Elan sintaksisi


const tip ad = dəyər;
Konstantanın elan sintaksisi
  • Tip — istənilən primitiv tip (int, double, string, char, həmçinin enum-lar və literal-lar).
  • Ad — adətən CamelCase və ya PascalCase stilində yazılır. "Sehrli" konstantlar üçün bəzən bütün hərfləri böyük və alt xətlərlə (DAYS_IN_WEEK) yazırlar, amma C#-da bu məcburi deyil.

Nümunələr:

const double GRAVITY = 9.81; // sərbəst düşmə sürətlənməsi, m/s^2
const char DELIMITER = ',';
const string DEVELOPER_NAME = "İvan Petrov";

Konstantların xüsusiyyətləri və məhdudiyyətləri

  • Dəyər kompilyasiya zamanı məlum olmalıdır. Yəni, proqram işləyərkən hesablanan dəyəri olan konstantanı elan etmək olmaz.
const int NowYear = DateTime.Now.Year; // KOMPİLYASİYA SƏHVİ!
  • Yalnız sadə tiplər, string və ya enum-lardan istifadə etmək olar.
  • Massiv, obyekt, metodun nəticəsi və s. konstant kimi elan etmək olmaz.
  • Hətta riyazi cəhətdən "sadə" görünən ifadələr də kompilyator tərəfindən hesablanmalıdır, proqram işləyərkən yox.

Məsələn, belə olmaz:

const string FullGreeting = "Salam, " + userName; // userName — dəyişəndir, belə olmaz!

Belə isə olar və lazımdır:

const string DefaultGreeting = "Salam, istifadəçi!";

Konstantlar adətən harada elan olunur?

  • Sinifin (və ya faylın) əvvəlində, metodların üstündə.
  • Xüsusi konstantlar sinifində (məsələn, public static class Constants).
  • Sinif səviyyəsində, əgər konstanta yalnız həmin sinifə aiddirsə.

Konsol tətbiqimiz üçün nümunə:

class Program
{
    const string Welcome = "Tətbiqimizə xoş gəlmisiniz!";
    static void Main(string[] args)
    {
        Console.WriteLine(Welcome);
    }
}

Konstantlar və görünürlük sahəsi

Konstantlar adi dəyişənlər kimi eyni görünürlük qaydalarına tabedir: onlar yalnız elan olunduqları sahədə görünür.

2. var açar sözü

var açar sözü — bu yeni dəyişən tipi deyil, sadəcə kompilyatora dəyişənin tipini kontekstdən özü çıxarmağa imkan verən rahat üsuldur.

Bu, sırf sintaksis şəkəridir — heç bir sehr yoxdur, kompilyasiyadan sonra dəyişən adi tipdə olur.


var age = 23;      // kompilyator başa düşür: age — int-dir
var name = "Anna"; // kompilyator başa düşür: string
var price = 99.99; // kompilyator başa düşür: double
Tipin çıxarılması üçün var-dan istifadə

Niyə var ortaya çıxdı?

  • Oxunaqlılıq: uzun tipləri (məsələn, Dictionary<string, List<int>>) əl ilə yazmağa ehtiyac yoxdur.
  • Elastiklik: gələcəkdə tipləri dəyişmək asan olur: sağ tərəfi dəyişdin — sol tərəfdə var özü uyğunlaşır.
  • Müasir stil: demək olar ki, bütün müasir C# layihələrində tip asanlıqla başa düşüləndə var istifadə olunur.

var nə vaxt istifadə oluna bilər (və lazımdır)

  • Sağ tərəfdə dəyişənin tipi aydın görünəndə.
  • Tip açıq-aşkar olanda (var price = 100; — aydındır ki, bu int-dir).
  • Tip çox uzun və ya mürəkkəb olanda (məsələn, LINQ sorğusunun nəticəsi).
var numbers = new int[] { 1, 2, 3, 4 };
var input = Console.ReadLine(); // input — string-dir (metod string qaytarır)

var-ı nə vaxt istifadə ETMƏMƏK daha yaxşıdır

Əgər tip sağ tərəfdən aydın deyilsə, kod daha az başa düşülən ola bilər. Və bir ay sonra hətta komanda yoldaşlarınla belə başa düşməyəcəksiniz ki, orada hansı tip idi, daha yaxşıdır ki, açıq şəkildə göstərəsən.

var mystery = DoSomethingVeryComplicated(); // SƏN KİMSƏN, mystery???

Burada tipi açıq göstərmək daha yaxşıdır:

string result = DoSomethingVeryComplicated();

Qızıl qayda: var-ı yalnız oxunaqlılığı pozmayan yerlərdə istifadə et!

var — yalnız lokal dəyişənlər üçün

var açar sözü yalnız lokal dəyişənlər üçün işləyir — metodların içində. var-ı istifadə etmək olmaz:

  • metodun parametrlərində;
  • sinifin property-lərində;
  • konstantlarda.

var "qapağın altında" necə işləyir

  • C# kompilyatoru kompilyasiya zamanı düzgün tipi qoyur.
  • Kompilyasiyadan sonra heç bir var qalmır.
  • Performans itkisi yoxdur: bu, sadəcə proqramçı üçün rahatlıqdır.
var year = 2025; // kompilyasiya zamanı belə olur: int year = 2025;

var istifadə edərkən tipik səhvlər

  • İnitializasiyasız dəyişən:
var a; // SƏHV: Kompilyator tip çıxara bilmir!
  • Qeyri-müəyyən initializasiya:
var list = null; // SƏHV: null-un tipi müəyyən deyil!
  • Dəyişənin müxtəlif tiplərlə təkrar istifadəsi:
var value = 5; // value — int-dir
value = "Beş"; // SƏHV: value artıq int-dir!

Müqayisə: açıq tip və var

Ssenari Açıq tip var
Tip aydındır
int age = 42;
var age = 42;
Metod mürəkkəb tip qaytarır
Dictionary<int, string> dict = SomeFunc();
var dict = SomeFunc();
Massiv
string[] names = ...
var names = ...
Məsləhət:

əksər hallarda müasir layihələrdə lokal dəyişənlər üçün var istifadə olunur. Parametrlər, property-lər, konstantlar üçün — yalnız açıq tip.

3. Tələlər və məsləhətlər

C#-da tez-tez kodun içində sehrli ədədlər yazılır ("7", "3.14159", "0.15" və başqa qəribə rəqəmlər). Bu pisdir: birdən dəyər dəyişsə, bütün layihədə həmin ədədi axtarmaq lazım olacaq. Konstantlardan istifadə et! Həm özünə rahat olacaq, həm də komanda yoldaşların səni lənətləməyəcək...

var ilə başqa bir ifrat: əgər bütün kodun yalnız var ilə doludursa, amma heç yerdə hansı tiplərdən istifadə olunduğu görünmürsə — kod tez bir zamanda başa düşülməz olur. Ona görə var-ı yalnız məntiqli və kontekstdən aydın olan yerlərdə istifadə et, qalan hallarda isə tipini açıq göstərməkdən çəkinmə.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION