Класс String дар C# бо дигар намудҳои додаҳо чӣ фарқ мекунад?
sobes.tech AI
Ҷавоб аз AI
Дар C# класи String аз бисёр намудҳои дигари маълумот фарқ мекунад, ки он як навъи ишора (referencing type) аст, аммо ҳамчун объекти номутобиқ (immutable) рафтор мекунад.
Асосӣ фарқиятҳо:
-
Номутобиқӣ: Пас аз эҷоди як сатр, мундариҷаи он тағир дода намешавад. Ҳар гуна амалиёт, ки ба назар мерасад, ки сатрро тағир медиҳад (масалан, пайвандсозӣ), дар асл як объекти нав String месозад.
-
Навъи ишора: String як синф аст, на структура, бинобар ин тағирёбандаҳои навъи string ба ишора ба объект дар хотира нигоҳ мекунанд.
-
Оптимизатсияҳо: Бо сабаби номутобиқӣ, сатрҳо метавонанд дар пули сатрҳо (interning) истифода шаванд, ки хотирасозиро сарфа мекунад.
-
Ҷамъоварии партовҳо: Аз он ҷиҳат, ки сатрҳо объектҳо ҳастанд, онҳоро ҷамъкунандаи партовҳо идора мекунад, ки идораи хотирасозиро осон мекунад.
Масалан:
string a = "hello";
string b = a;
a = a + " world"; // Объекти нави сатр эҷод мешавад
// b боқӣ мемонад "hello", a мешавад "hello world"
Ин гуна, бо вуҷуди он ки онҳо навъи ишора мебошанд, сатрҳо ҳамчун арзишҳо дар назар ба номутобиқӣ рафтор мекунанд, ки бехатарӣ ва пешгӯӣ дар кор бо матнро таъмин мекунад.