Показать сообщение отдельно
Старый 19.05.2012, 02:56   #7
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Array.ConstrainedCopy

Сообщение от MoKa Посмотреть сообщение
ЧИСЛА НЕ УКАЗАТЕЛИ!

Если ты засунешь туда объекты, то будут копии указателей на объекты, а объект останется одним и тем же.
ЧИСЛА - это простые данные, присваивание к ним данных, или присваивание чисел к числам - не операции с указателем, а операции с самими данными.

Засунь туда объект, и сделай снова свой эксперимент.
да я вкурсе что числа это данные. Ща проверю с объектами.

    class lol
    {
        public int x { get; set; }
        public lol(int p)
        { x = p; }
    }
    class TestClass
    {
        static void Main()
        {
            lol[] a = { new lol(1), new lol(2), new lol(3)};
            object ob = a.Clone();
            lol[] b = (lol[])ob;
            b[0].x = 0;
            foreach(var i in a) Console.Write(i.x);
            Console.WriteLine();
            foreach (var i in b) Console.Write(i.x);
            Console.WriteLine();
        }        
    }
012
012

Терь все понятно.=)
Массивы содержат в каждой ячейке какой то объект. Но Для массивов типов значений (int[] итд), Этот объект является значением. Он и копируется, но дальше никуда не ссылается.
А для массивов состоящих из элементов ссылочного типа. Копируется в объекте их адрес. И он ссылается уже на элементы. Которые и являются общими. А для типов значений эти элементы не могут быть общими потому что там вместо адреса само значение.

Наверное ты мне это и пытался объяснить с первого поста. xD
(Offline)
 
Ответить с цитированием