C#-də sahə (scoped) nədir?
sobes.tech Süni İntellekt
AI-dan cavab
C# və xüsusən ASP.NET Core-da, scoped sahəsi, asılılıq injeksiyası (DI) konteynerində qeydiyyata alınmış xidmətlərin həyat müddətinə aiddir. scoped sahəsi olan xidmət hər sorğu üçün (məsələn, HTTP sorğusu) bir dəfə yaradılır və bu sorğu ərzində təkrar istifadə olunur. Sorğu tamamlandıqdan sonra, xidmətin nümunəsi məhv edilir.
Bu, xidmətin yalnız bir sorğu daxilində vəziyyət və ya kontekst saxlaması lazım olduqda, amma fərqli sorğular arasında yox, istifadə üçün əlverişlidir.
scoped sahəsi ilə xidmətin qeydiyyatı nümunəsi:
services.AddScoped<IMyService, MyService>();
Bu halda, hər HTTP sorğusu öz MyService nümunəsini alacaq. Əgər sorğu daxilində xidmət bir neçə dəfə tələb olunursa, eyni nümunə istifadə olunacaq.
sobes.tech Süni İntellekt
AI-dan cavab
C# dilində görünürlük sahəsi, dəyişənlərin, metodların və tiplərin proqramın müəyyən bir hissəsində əlçatanlığını müəyyən edir. Bu, kodda müəyyən bir identifikatorun harada istifadə oluna biləcəyinə dair məhdudiyyətdir.
Əsas görünürlük sahələri:
- Kod bloku:
{ }içində elan olunan dəyişənlər yalnız bu blok daxilində mövcuddur. - Metod sahəsi: Bir metod daxilində elan olunan dəyişənlər və parametrlər yalnız həmin metod daxilində mövcuddur.
- Sinif/Struktura sahəsi: Sinif və ya struktur üzvləri (sahələr, xüsusiyyətlər, metodlar) giriş modifikatorlarına (public, private, protected, internal) görə əlçatan olur.
- Ad sahəsi (Namespace) sahəsi: Namespace daxilində elan olunan tiplər bu namespace-də və
usingistifadə olunduğu digər namespace-lərdə əlçatan olur. - Yığma (Assembly) sahəsi:
internalmodifikatoru ilə olan tiplər yalnız cari yığma daxilində əlçatan olur.
Kod bloku sahəsinə nümunə:
public void ExampleMethod()
{
int x = 10; // x yalnız ExampleMethod daxilində əlçatan
if (x > 5)
{
int y = 20; // y yalnız if blok daxilində əlçatan
Console.WriteLine(y);
}
// Console.WriteLine(y); // Tərtib xətası: y burada əlçatan deyil
}