Junior
İstinad növü məlumatları nədir?
sobes.tech Süni İntellekt
AI-dan cavab
İstinad növləri öz dəyərini deyil, onun yerləşdiyi yerə (bellek ünvanına) istinad (referans) saxlayır.
Xüsusiyyətlər:
- İstinad növü olan dəyişənlər
null-a istinad edə bilər. - Bir istinad növü dəyişənin dəyərini digərinə təyin etdikdə, dəyər deyil, istinad kopyalanır. Hər iki dəyişən eyni yaddaş yerinə işarə edir.
- Bir istinad vasitəsilə edilən dəyişikliklər, əgər hər ikisi eyni obyekti göstərirsə, digərindən də görünəcək.
- İstinad növü olan obyektlərin yaddaşı garbage collector tərəfindən idarə olunur.
İstinad növlərinə nümunələr:
- Stringlər (
String) - Array-lər
- İstifadəçi tərəfindən yaradılmış sinif obyektləri
- Delegatlar (bəzən dillərdə)
Dəyər tiplərindən fərqləri:
| Xüsusiyyət | Dəyər tipləri | İstinad tipləri |
|---|---|---|
| Saxlama | Öz dəyəri | Dəyərə istinad |
| Kopyalama | Öz dəyəri kopyalanır | İstinad kopyalanır |
| Dəyişiklik | Kopyada edilən dəyişikliklər orijinalı təsir etmir | Bir istinad vasitəsilə edilən dəyişikliklər digərində də görünür (əgər eyni obyekti göstərirlərsə) |
| Yaddaş | Yığın (stack) tərəfindən idarə olunur (adətən) | Yığım tərəfindən idarə olunur, garbage collector tərəfindən təmizlənir |
| Nümunələr | int, float, bool, struct (bəzən dillərdə) |
String, Array, Object |
// C#-də nümunə
string s1 = "Hello"; // s1, "Hello" stringinə istinad edir
string s2 = s1; // s2, indi eyni istinada saxlanılır
// Dəyişiklik zamanı, digər istinad vasitəsilə görünməz,
// çünki C#-də stringlər dəyişməzdir (immutable).
// Dəyişiklik zamanı, yeni string yaradılır və istinad yenidən təyin edilir.
s1 = "World";
Console.WriteLine(s2); // "Hello" çıxış verir
int[] arr1 = { 1, 2, 3 }; // arr1, {1, 2, 3} array-ına istinad edir
int[] arr2 = arr1; // arr2, indi eyni istinada saxlanılır
arr2[0] = 10; // arr2 vasitəsilə dəyişiklik
Console.WriteLine(arr1[0]); // 10 çıxış verir, dəyişiklik arr1-də də görünür
// Java-da nümunə
String s1 = "Hello"; // s1, "Hello" stringinə istinad edir
String s2 = s1; // s2, indi eyni istinada saxlanılır
// Java-da stringlər dəyişməzdir (immutable).
// Dəyişiklik zamanı, yeni string yaradılır və istinad yenidən təyin edilir.
s1 = "World";
System.out.println(s2); // "Hello" çıxış verir
int[] arr1 = { 1, 2, 3 }; // arr1, {1, 2, 3} array-ına istinad edir
int[] arr2 = arr1; // arr2, indi eyni istinada saxlanılır
arr2[0] = 10; // arr2 vasitəsilə dəyişiklik
System.out.println(arr1[0]); // 10 çıxış verir, dəyişiklik arr1-də də görünür