Назад Вперед Зміст

Значущі та посилальні типи

Для значущих типів значенням змінної є число або символ.

Для посилальних типів значенням змінної є посилання на певний об'єкт, розташований у динамічній пам'яті.

Кілька посилальних змінних можуть вказувати на один і той самий об'єкт та використовувати його значення.

У цьому прикладі на початку програми змінні a та b містили різні адреси у пам'яті.


int[] arrayA = { 1, 2, 3, 4, 5 };
int[] arrayB = { 6, 7, 8 };

// Виведення початкових масивів
Console.WriteLine("Початковий масив A:");
for (int i = 0; i < arrayA.Length; i++)
    Console.Write("{0} ", arrayA[i]);

Console.WriteLine("\nПочатковий масив B:");
for (int i = 0; i < arrayB.Length; i++)
    Console.Write("{0} ", arrayB[i]);

// Присвоєння посилання (arrayB тепер вказує на arrayA)
arrayB = arrayA;

// Зміна значень через обидва посилання
arrayB[0] = 100; 
arrayA[1] = 200;

// Виведення результатів
Console.WriteLine("\n\nМасив A після змін:");
for (int i = 0; i < arrayA.Length; i++)
    Console.Write("{0} ", arrayA[i]);

Console.WriteLine("\nМасив B після змін:");
for (int i = 0; i < arrayB.Length; i++)
    Console.Write("{0} ", arrayB[i]);

Console.WriteLine("\n\nНатисніть будь-яку клавішу...");
Console.ReadKey();

Після виконання оператора b=a, обидві змінні a та b почали містити адресу масиву a. Тобто, до одного й того самого масиву можна звертатися як за іменем a, так і за іменем b.

Отже, оператор b[0]=100 присвоїть значення 100 і a[0], а оператор a[1]=200 присвоїть значення 200 і b[1]. Це видно після виведення масивів a та b на екран.

Результат виконання:

Початковий масив A:
1 2 3 4 5 
Початковий масив B:
6 7 8 

Масив A після змін:
100 200 3 4 5 
Масив B після змін:
100 200 3 4 5 

Натисніть будь-яку клавішу...

Назад Вперед Зміст