Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2012, 14:35   #1
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию Преобразование типов массивов

Здравствуйте!

Я в C# достаточно новичок и никак не могу совладать с с проблемой:
Есть массив неких объектов, скажем
Код:
T[] arr = ...;
Потом, скажем, присутствует присвоение значения переменной arr некоторой переменной типа object:
Код:
object obj = arr;
И потом мне нужно преобразовать этот obj к типу object[]:
Код:
object[] arr2 = obj as object[];
По идее класс T отнаследован от object как и любой другой. Но подобное приведение типа оказывается невозможно...
Собственно, интересно узнать почему так, и, что важнее, узнать как можно решить такую проблемку.

Заранее спасибо!

p.s. пример может выглядеть надуманно и нелепо, но это просто упрощение ситуации, идентичной указанной)

Правка: Ну или хотя бы как можно пробежаться по тому массиву имея лишь переменную obj
Изобретатель велосипедов

Последний раз редактировалось Selestis; 04.01.2012 в 14:41. Причина: update
Selestis вне форума Ответить с цитированием
Старый 04.01.2012, 18:48   #2
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Я может ничего не понимаю или не так понимаю, но это корректно работает...

Код:
class T
    {
        public T(string d)
        {
            s = d;
        }
        public string s;
    }

    class Program
    {
        static void Main(string[] args)
        {
            T[] arr = new T[2] { new T("1"), new T("2") };
            object o = arr;
            object arr2 = o as object[];

            foreach (object ob in arr2 as object[])
            {
                Console.WriteLine((ob as T).s);
            }
            Console.ReadKey();
        }
    }
Guy вне форума Ответить с цитированием
Старый 04.01.2012, 19:03   #3
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

хмм, странно, я пытался писать
Код:
object[] arr2 = o as object[];
И это не работало... Я правда уже по-другому сделал, но немного криво. Спасибо!
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
преобразование типов яз СИ Танчик007 Помощь студентам 0 03.05.2011 18:57
Преобразование типов FaTaL Общие вопросы .NET 5 07.03.2011 14:07
Преобразование типов ArtGoN Общие вопросы C/C++ 5 16.11.2010 19:35
Си. Преобразование типов pif Помощь студентам 3 20.04.2009 13:54
Преобразование типов MAKEDON Общие вопросы C/C++ 3 02.03.2009 18:27