Sobes.tech
Junior

Навъҳои маълумоти истинодӣ чистанд?

sobes.tech AI

Ҷавоб аз AI

Типҳои додаҳои бо истинод на танҳо арзишро нигоҳ медоранд, балки истинод (суроға дар хотира) ба ҷойе, ки ин арзиш ҷойгир аст.

Хусусиятҳо:

  • Променливҳои навъи истинод метавонанд null дошта бошанд.
  • Вақте ки арзиши як променливи навъи истинод ба дигаре дода мешавад, на арзиш, балки истинод нусхабардорӣ мешавад. Ҳарду променлив ба як ҷой дар хотира ишора мекунанд.
  • Тағиротҳое, ки тавассути як истинод анҷом дода мешаванд, тавассути дигар низ дида мешаванд, агар ба як объект ишора кунанд.
  • Хотира барои объектҳои навъи истинод аз ҷониби garbage collector идора мешавад.

Маслиҳатҳо барои навъҳои додаҳои бо истинод:

  • Матнҳо (String)
  • Масивҳо
  • Объектҳои синфҳои истифодабаранда
  • Делегатҳо (дар баъзе забонҳо)

Тафовут бо навъҳои додаҳои арзишӣ:

Хусусият Навъҳои додаҳои арзишӣ Навъҳои додаҳои бо истинод
Захира Арзиши худ Ҳавола ба арзиш
Нусхабардорӣ Арзиши худ нусхабардорӣ мешавад Ҳавола нусхабардорӣ мешавад
Тағирот Тағирот дар нусха ба оригинал таъсир намерасонад Тағирот тавассути як ҳавола ба дигар таъсир мерасонад (агар ба як объект ишора кунанд)
Хотира Аз ҷониби стек идора мешавад Аз ҷониби heap идора мешавад, тоза карда мешавад бо garbage collector
Маслиҳатҳо int, float, bool, struct (дар баъзе забонҳо) String, Array, Object
// Маслиҳат дар C#
string s1 = "Hello"; // s1 ба сатр "Hello" ишора мекунад
string s2 = s1;      // s2 ба ҳамон ҳавола ишора мекунад

// Дар тағирот, тавассути дигар ҳавола намебинад,
// зеро сатрҳо дар C# иммутабиланд. 
// Вақте тағирот мешавад, сатр нав эҷод мешавад ва ҳавола тағир дода мешавад.
s1 = "World"; 

Console.WriteLine(s2); // Мебинад "Hello"

int[] arr1 = { 1, 2, 3 }; // arr1 ба массив {1, 2, 3} ишора мекунад
int[] arr2 = arr1;     // arr2 ба ҳамон ҳавола ишора мекунад

arr2[0] = 10;          // Тағирот тавассути arr2

Console.WriteLine(arr1[0]); // Мебинад 10, тағирот тавассути arr1 низ дида мешавад
// Маслиҳат дар Java
String s1 = "Hello"; // s1 ба сатр "Hello" ишора мекунад
String s2 = s1;      // s2 ба ҳамон ҳавола ишора мекунад

// Сатрҳо дар Java иммутабиланд.
// Вақте тағирот мешавад, сатр нав эҷод мешавад ва ҳавола тағир дода мешавад.
s1 = "World"; 

System.out.println(s2); // Мебинад "Hello"

int[] arr1 = { 1, 2, 3 }; // arr1 ба массив {1, 2, 3} ишора мекунад
int[] arr2 = arr1;     // arr2 ба ҳамон ҳавола ишора мекунад

arr2[0] = 10;          // Тағирот тавассути arr2

System.out.println(arr1[0]); // Мебинад 10, тағирот тавассути arr1 низ дида мешавад