Что происходит в Console.Write(), когда я помещаю массив int в качестве параметра?

Вопрос как в заголовке. Что именно происходит, когда вызывается метод Write? Если у меня есть такой код:

int [] t = new int[]{2,1};
Console.Write(t);

есть ли возможность, что без изменения параметра метода записи (без добавления [0]) будет отображаться номер 2? (первый элемент массива) Будет ли этот код давать одинаковый результат в разных версиях .NET framework?

Метод с использованием Console.WriteLine в C# и ildasm

Почему этот метод не пишет тип y? (Система.Int32[])


person Arvangen    schedule 07.06.2012    source источник
comment
хорошо, я знаю это. Теперь возможно ли, что t.ToString() дает не System.Int32[], а 2? Maby ToString() работает по-разному с другой версией .NET framework?   -  person Arvangen    schedule 07.06.2012


Ответы (1)


Нет, на самом деле это невозможно, так как вам придется переопределить метод toString() Int32[].

Console.Write(t) — это просто Console.Write(t.toString()), а t.toString() — это Int32[].toString().

Поведение Int32[].toString() заключается в простом возврате типа, в данном случае System.Int32[].

Итак, чтобы ответить на ваш вопрос, нет, вы не можете заставить Int32[].toString() возвращать toString() первого индекса.

person Ryan    schedule 07.06.2012
comment
Однако не забывайте о перегрузках. Console.Write(charArray), где charArray имеет тип char[], будет иметь более содержательный вывод. - person ; 08.06.2012