Лучший отвечающий
C# : Params

Вопрос
-
Почему при дебаге консоль пишет System.Int32[], а не элементы массива?
Код:
class Program { public static void UseParams(params object[] list) { for (int i = 0; i < list.Length; i++) { Console.Write(list[i] + " "); } Console.WriteLine(); } static void Main(string[] args) { int[] myIntArray = { 5, 6, 7, 8, 9 }; UseParams(myIntArray); Console.ReadKey(); } }
Для начинающего.- Изменено Nick Mine 11 мая 2014 г. 8:31
10 мая 2014 г. 13:06
Ответы
-
В метод UseParams вы передаёте один аргумент, причём этот аргумент не может быть неявно преобразован к типу object[], поэтому вызов UseParams(myIntArray) эквивалентен UseParams(new object[] { myIntArray }). То есть в Вашем случае параметр list — это массив из одного элемента, массива чисел. Строковое представление этого массива чисел "System.Int32[]", так как ToString у массивов не переопределён и просто выводит тип объекта.11 мая 2014 г. 16:01
Все ответы
-
Кто куда выходит? Лаконичность не к месту, если хотите получить ответ. Опишите русским языком, чего Вы добиваетесь.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
10 мая 2014 г. 19:04 -
В метод UseParams вы передаёте один аргумент, причём этот аргумент не может быть неявно преобразован к типу object[], поэтому вызов UseParams(myIntArray) эквивалентен UseParams(new object[] { myIntArray }). То есть в Вашем случае параметр list — это массив из одного элемента, массива чисел. Строковое представление этого массива чисел "System.Int32[]", так как ToString у массивов не переопределён и просто выводит тип объекта.11 мая 2014 г. 16:01