Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.95/19: Рейтинг темы: голосов - 19, средняя оценка - 4.95
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
1
.NET 4.x

Создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы данных

24.01.2014, 22:46. Показов 3405. Ответов 10
Метки нет (Все метки)

Мне нужно создать массив, содержащий массивы, которые, в свою очередь, содержат массивы, в которых уже будут храниться различные типы данных. (не спрашивайте, зачем)

Код:
C#
1
2
public List<List> All;
public List<List> One;
C#
1
2
 One = new List<List>();
All.Add(One);
Пишет, что преобразование из System.Collections.Generic.list в System.Windows.Documents.List невозможно.
Есть ли какой-нибудь способ подобным образом добавлять в массив массивы?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2014, 22:46
Ответы с готовыми решениями:

Можно ли создать массив в котором с 0 по 4 элемент будут храниться double, с 5 по 9 будут храниться int и т.д.?
Такой вопрос: я хочу создать одномерный массив в котором с 0 по 4 элемент будут храниться double, с...

Получить массив, где будут храниться индексы строк матрицы, в которых есть равные элементы
2. Дан прямоугольный массив A. Получить линейный массив B, в котором будут храниться номера тех...

Как создать одномерный динамический массив, элементами которого будут одномерные массивы разной длины?
Здравствуйте. Подскажите как создать одномерный динамический массив, элементами которого будут...

Можно ли в com-сервере создать массив в котором будут храниться данные какое-то время
Можно ли в com-сервере сделать так, чтобы одна из процедур выполняла вычисления и заносила их в...

10
Master of Orion
Эксперт .NET
6085 / 4941 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.01.2014, 01:45 2
C#
1
List<List<int>> list;
только это не поможет, проблема в касте не к тому типу же.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
25.01.2014, 14:28  [ТС] 3
Насколько я разобрался, List и List<T>-совершенно разные типы, поэтому в случае вложенных массивов нужно писать типа List<List<List>> и тд. Но в конечном итоге это не поможет, т.к. массив должен содержать массивы с разными типами данных, например, 4 массива текстбоксов, 4-RadioButton. Нет ли способа сделать это как-то по другому?
0
Master of Orion
Эксперт .NET
6085 / 4941 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.01.2014, 14:29 4
Олегарх, сделать можно что угодно, вопрос в том, как правильно сформулировать задачу.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
25.01.2014, 14:54  [ТС] 5
Цитата Сообщение от Psilon Посмотреть сообщение
Олегарх, сделать можно что угодно, вопрос в том, как правильно сформулировать задачу.
Что ж, есть вариант использовать вложенные массивы типа jagged array или ArrayList.
Буду пробовать
0
548 / 316 / 138
Регистрация: 08.02.2013
Сообщений: 609
25.01.2014, 15:12 6
Олегарх, Возможно, стоит использовать полиморфизм
C#
1
List<List<System.Windows.Forms.Control>> ...;
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
25.01.2014, 15:17  [ТС] 7
Довольно интересно... А под WPF это будет выглядеть так?
C#
1
  List<List<System.Windows.Controls.Control>>
0
Master of Orion
Эксперт .NET
6085 / 4941 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
25.01.2014, 15:20 8
Олегарх, забудьте вообще про неймспейс System.Collections, все нормальные коллекции расположены в Generics.
Довольно интересно... А под WPF это будет выглядеть так?
ну да. Собственно коллекция Controls это и есть List<Control>
0
548 / 316 / 138
Регистрация: 08.02.2013
Сообщений: 609
25.01.2014, 15:32 9
Олегарх, собственно, можно посмотреть иерархию в документации:
http://msdn.microsoft.com/ru-r... .110).aspx
http://msdn.microsoft.com/ru-r... .110).aspx

System.Windows.Controls.Control - общий класс, но я бы брал интрефейс FrameworkElement, все зависит от желаний, если нужно, например, только перерисовыть элемент - тащим от UIElement.
0
0 / 0 / 0
Регистрация: 20.10.2012
Сообщений: 57
25.01.2014, 19:29  [ТС] 10
От элементов мне нужно, лишь чтобы я мог обращаться к ним через эти массивы и удалять при надобности.
При написании
C#
1
     public List<Control<Control>> All;
пишет Вместе с аргументами-типами нельзя использовать не универсальный тип "System.Windows.Controls.Control"
То же самое через FrameworkElement

Добавлено через 10 минут
Кажется, разобрался. А если создать List<Object>, выходит, что туда можно положить абсолютно любой элемент или переменную?

Добавлено через 38 минут


Теперь встал вопрос, как преобразовать этот самый Object в List для вызова элемента
Вот, например, я положил List<string> в List<Object>, и теперь мне нужно получить доступ к значению заданного элемента вложенного массива
0
548 / 316 / 138
Регистрация: 08.02.2013
Сообщений: 609
25.01.2014, 20:00 11
Цитата Сообщение от Олегарх Посмотреть сообщение
Теперь встал вопрос, как преобразовать этот самый Object в List для вызова элемента
Учите язык, есть явное/неявное преобразование типов, есть операторы Is и As, так же у Object имеется метод GetType() вовращающий объект типа Type, вот примеры:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class A {}
class B : A {}
class C { }
 
List<List<object>> list = new List<List<object>>();
list.Add(new List<object>());
 
List<object> slist = (List<object>)list[0]; // Точно знаем типы
 
slist.Add(new A());
slist.Add(new B());
slist.Add(new C());
 
A i1 = (A)slist[0];
A i2 = slist[1] as A; // в i2 интерфейс A объекта типа B
        
//A i3 = (A)slist[2]; // ошибка исполнения
A i4 = slist[2] as A; // в i4 null
 
bool b1 = (new B()) is A;  // True
bool b2 = (new B()) is B;  // True
bool b3 = (new C()) is A;  // False
        
// Точное соответствие типов:
bool b4 = (new B()).GetType() == typeof(B); // True
bool b5 = (new B()).GetType() == typeof(A); // False
 
// Обычно делают так:
C c = (new A()) as C;
if (c != null) { ... };
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2014, 20:00

Создать централизованную базу данных, где будут храниться все клиенты, всех офисов
Доброго времени суток ! Есть проблема одна. Несколько офисов, работают ведут учет клиентов в...

Вывести на экран те массивы из файла, которые не содержат отрицательных элементов
Компоненты типизированного файла – целочисленные массивы, состоящие из 5 элементов. Вывести на...

Типизированные файлы. Вывести на экран те массивы, которые не содержат отрицательных элементов
Компоненты заданного типизированного файла – целочисленные массивы, состоящие из 5 элементов....

Ввести и упорядочить по убыванию четыре массивы, которые содержат N целых чисел
Ввести и упорядочить по убыванию четыре массивы, которые содержат соответственно 5,4,6,7 целых...

Создать вторую очередь в которой будут только числа, которые нацело делятся на 2, 3, 5 одновременно
Здравствуйте. Прощу помощи с заданием: &quot;Ввести число N. Создать очередь из чисел от 0 до N....

Есть динамические массивы А и Б. Создать массив С,который состоит из элементом массива А,которых нет в массиве Б
Доброго времени суток , у меня есть код,который частично выполняет данную задачу для статического...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.