6 / 6 / 2
Регистрация: 06.12.2009
Сообщений: 51
1

Cast<TResult> приведение к заранее неизвестному типу

23.07.2012, 13:00. Показов 3296. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. У меня есть переменная result типа ArrayList. Привести ее к массиву типа string можно так:
C#
1
string[] mas = result.Cast<string>().ToArray<string>();
к массиву типа int так:
C#
1
int[] mas = result.Cast<int>().ToArray<int>();
Как мне быть, если я заранее не знаю тип к которому мне нужно привести ArrayList? У меня есть только имя класса к которому нужно привести в переменной типа string. Т.е. с помощью рефлексии я могу, например, создать экземпляр этого класса. Никак не могу догадаться как мне передать этот тип в Cast? Быть может можно как-то это реализовать и без linq функции Cast. Это как бы не критично.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.07.2012, 13:00
Ответы с готовыми решениями:

Как обратиться к заранее неизвестному текстовому полю?
как обратится к текстовому полю которое есть на форме но его имя станет известным только в ...

Приведение типов C-style cast
Чем отличается приведение типа (int)variable; от int(variable); (хотелось бы с углублениями как и...

Приведение к типу
В чем разница? static_cast&lt;int&gt;(a); и (int)a

Приведение к типу
Здравствуйте, Подскажите пожалуйста по двум вопросам: 1)Вот есть такие две строчки: int ...

3
Эксперт Java
4090 / 3824 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.07.2012, 13:09 2
У ArrayList есть метод - ArrayList.ToArray Method (Type).
Вам остается только по имени класса получить Type и передать его в этод метод;
0
6 / 6 / 2
Регистрация: 06.12.2009
Сообщений: 51
23.07.2012, 14:14  [ТС] 3
Цитата Сообщение от turbanoff Посмотреть сообщение
У ArrayList есть метод - ArrayList.ToArray Method (Type).
Вам остается только по имени класса получить Type и передать его в этод метод;
Проблема в том, что ArrayList.ToArray(Type) возвращает же мне System.Array и опять нужна конвертация. Т.е. если у меня в ArrayList экземпляры допустим моего класса AnswData, то мне нужно же написать так (пусть t это переменная типа Type от моего класса AnswData):
C#
1
(AnswData[])result.ToArray(t);
Т.е. опять пропадает обобщенность т.к. в ArrayList может быть и другой мой класс, отличный от AnswData.
0
Эксперт Java
4090 / 3824 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
23.07.2012, 15:15 4
Вы же не знаете сам тип массива во время компиляции. Значит вы не можете с ним делать ничего такого, что зависит от типа данных.
А значит вам должно быть все равно как записан массив, object[], AnswData[] или System.Array. Ведь все равно это будет один и тот же массив во время выполнения и действия вы с ним можете делать только те, что можете со всеми тремя сразу.

Тут надо задать вопрос, зачем вам получить массив неизвестного типа? Что вы с ним дальше собираетесь делать?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.07.2012, 15:15
Помогаю со студенческими работами здесь

Приведение к типу
Почему в array нет поля класса а когда привожук типу a? using System; using...

Приведение к типу-наследнику
#include &lt;iostream&gt; class A { }; class B: public A { void foo() const { std::cout &lt;&lt; &quot;some...

Нетривиальное приведение к типу
Доброго времени суток! Возник вопрос, прошу помощи... Суть проблемы: есть код (получение...

Приведение к типу DocWindow
Здравствуйте. Я изучаю qt 4.8 читаю книжку мкса шелье. Вообщем там все объяснено, но появилась...

Приведение к рефлексивному типу
Получаю некоторый тип путем: Class.forName(&quot;&quot;) И есть значение, возвращаемое методом, как это...

Динамическое приведение к типу
Можно ли каким либо образом сделать приведение к какому либо типу, при условии что название типа...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru