Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.154.171] |
|
Сообщ.
#1
,
|
|
|
В функции
static void ShowResult(dynamic sArr, dynamic iArr1, dynamic iArr2, dynamic iArr3) { for (int i = 0; i < sArr.Length; i++) { Console.WriteLine("{0}\n{1}\t{2}\t{3}", sArr[i], iArr1[i], iArr2[i], iArr3[i]); } Console.WriteLine("\n ------------------------------------------ \n "); } |
Сообщ.
#2
,
|
|
|
Имхо, foreach использовать нельзя. Я в спесификации с шарп не встречал утверждения, что индексер и итератор обрабатывают элементы в одном и том же порядке.
А чтобы понять, что хранится в переменной, надо использовать typeof. |
Сообщ.
#3
,
|
|
|
Цитата tumanovalex @ естественно возникает ошибка, если sArr имеет тип List (тогда нужно sArr.Count). Можно использовать вместо for foreach, но тогда вывести несколько значений в одну строку (например для sArr, sArr1 и других) получится только, если ввести переменную i в цикле foreach и ее i++. Кроме того, хотелось бы сделать так, чтобы вывод значений был для массивов int, string и List int и string, при этом параметры функции были бы разными по типам, а их количество могло бы быть различным (например, от 1 до 5). Помогите, пожалуйста. Мне кажется у тебя вообще неверный подход к решению задачи. Тип dynamic не для этого нужен. Он нужен когда вообще не понятно какой тип у тебя может возвратить например функция/метод из другого язка. Обычно с этим наглядно можно столкнуться когда используешь например COM или подключаешь библиотеки на других языках, где есть свои типы данных. В твоем же случае я думаю, достаточно использовать универсальные классы, универсальные методы, Универсальные методы и массивы Например вот так: https://ideone.com/uJblLY Скрытый текст using System; using System.Collections.Generic; public class Test { public static void ShowResult<T1, T2>(ICollection<T1> arr1, ICollection<T2> arr2) { foreach(var item in arr1) { Console.WriteLine(item); } foreach(var item in arr2) { Console.WriteLine(item); } } public static void Main() { List<string> list = new List<string>(); list.Add("dsafs1"); list.Add("dsafs2"); list.Add("dsafs3"); int[] array = new int[5] { 1, 2, 3, 4, 5 }; ShowResult<string, int>(list, array); // your code goes here } } |
Сообщ.
#4
,
|
|
|
Спасибо большое за ответы. Попробую использовать рекомендуемые подходы.
|