четверг, 19 марта 2015 г.

MEMO: ссылки и значения

На днях на семинаре по интерфейсам студент задал вопрос по изменению значений по ссылкам и изменению значений самих ссылок. Кода было много, поэтому записываю вопрос в упрощённом виде.

Есть код на C#:
using System;

class Program {
    static void Display(int[] ar, string name) {
Console.Write(name + ":");
        foreach (int i in ar)
            Console.Write(i + " ");
        Console.WriteLine();
    }
    static void Main(string[] args) {
        int[] a = new int[3];
        a[0] = 1;
        a[1] = 2;
        a[2] = 3;
        Display(a, "a");
        int[] b;
        b = a;
        Display(b, "b");
        a[1] = 5; // изменили значение
        Display(a, "a");
        Display(b, "b");
        b = new int[2]; // изменили ссылку
        Display(a, "a");
        Display(b, "b");
    }
}
почему два последних вывода различны, если была команда b = new int[2]; ?

Комментариев нет:

Отправить комментарий