Sobes.tech
Junior

C#-də String sinfi digər məlumat tiplərindən necə fərqlənir?

sobes.tech Süni İntellekt

AI-dan cavab

C# dilində String sinfi digər çoxsaylı məlumat tiplərindən fərqli olaraq, referans tipidir, lakin dəyişməz (immutable) obyekt kimi davranır.

Əsas fərqlər:

  • Dəyişməzlik: Bir sətir yaradıldıqdan sonra onun məzmunu dəyişdirilə bilməz. Sətiri dəyişdirməyə bənzəyən hər hansı əməliyyat (məsələn, birləşdirmə) əslində yeni bir String obyekti yaradır.

  • Referans tipi: String bir sinifdir, struktur deyil, ona görə də string tipli dəyişənlər yaddaşdakı obyektə istinad edir.

  • Optimizasiyalar: Dəyişməzlik sayəsində, sətirlər string hovuzunda (interning) istifadə oluna bilər, bu yaddaşdan qənaət edir.

  • Tullantıların toplanması: Sətirlər obyektlər olduğundan, onlar tullantıların toplanıcısı tərəfindən idarə olunur, bu yaddaş idarəsini sadələşdirir.

Nümunə:

string a = "hello";
string b = a;
a = a + " world"; // Yeni bir sətir obyekti yaradılır

// b "hello" olaraq qalır, a isə "hello world" olur

Bu şəkildə, referans tipinə sahib olmalarına baxmayaraq, sətirlər dəyişməzlik baxımından dəyərlər kimi davranır, bu da mətnlə işləyərkən təhlükəsizlik və proqnozlaşdırma təmin edir.