(.NET) Конверт ArrayList в string[] ???
От: torrin  
Дата: 07.07.04 15:40
Оценка:
К знатокам NET, подскажите...
есть метод
private void B(string[] T);
фрагмент кода:
ArrayList arr;
//вариант 1:
B(arr);
//Компилятор — несовместимые типы
//вариант 2:
B(arr.ToArray());
//Компилятор — не могу преобразовать object[] в string[]
Вопрос: как красиво произвести унбоксинг массива???
P.S.
B((string [])arr.ToArray())
Пробовал уже,
компилятор пропускает
но в Run-Time вылетает исключение
Re: (.NET) Конверт ArrayList в string[] ???
От: mikа Stock#
Дата: 07.07.04 15:43
Оценка:
Здравствуйте, torrin, Вы писали:

ArrayList.ToArray(typeof(string))
Re: (.NET) Конверт ArrayList в string[] ???
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 07.07.04 15:52
Оценка:
Здравствуйте, torrin, Вы писали:

Array.Copy
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[2]: (.NET) Конверт ArrayList в string[] ???
От: torrin  
Дата: 07.07.04 15:57
Оценка:
Здравствуйте, mikа, Вы писали:

M>Здравствуйте, torrin, Вы писали:


M>ArrayList.ToArray(typeof(string))

Результат:
Argument '1': cannot convert from 'System.Array' to 'string[]'

Из MSDN:
Copies the elements of the ArrayList to a new Object array.
[C#] public virtual object[] ToArray();

Copies the elements of the ArrayList to a new array of the specified type.
[C#] public virtual Array ToArray(Type);

Ваш вариант возвращает Array a не string[]
Re[2]: (.NET) Конверт ArrayList в string[] ???
От: torrin  
Дата: 07.07.04 16:02
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Здравствуйте, torrin, Вы писали:


S>Array.Copy

Не ясен смысл использования
public virtual void CopyTo(Array);
тогда как на выходе нужен string[]
Re: (.NET) Конверт ArrayList в string[] ???
От: WolfHound  
Дата: 07.07.04 16:08
Оценка: :))
Здравствуйте, torrin, Вы писали:

T>К знатокам NET, подскажите...

Даже такой кондовый С++ник как я смог решить эту задачу
            string[] s=(string[])a.ToArray(typeof(string));
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: (.NET) Конверт ArrayList в string[] ???
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 07.07.04 16:09
Оценка:
Здравствуйте, torrin, Вы писали:

T>Здравствуйте, Serginio1, Вы писали:


S>>Здравствуйте, torrin, Вы писали:


S>>Array.Copy

T>Не ясен смысл использования
T>public virtual void CopyTo(Array);
T>тогда как на выходе нужен string[]

 string[] B= new string[arr.Count];

  Array.Copy(arr.ToArray(),0,B,0,B.Length);

или

    arr.ToArray().CopyTo(B,0);

или

    arr.ToArray(typeof(string[]))
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[3]: (.NET) Конверт ArrayList в string[] ???
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 07.07.04 16:16
Оценка:
Здравствуйте, torrin, Вы писали:



T>Ваш вариант возвращает Array a не string[]

А привести через (string[]) лениво????
... << RSDN@Home 1.1.0 stable >>
и солнце б утром не вставало, когда бы не было меня
Re[2]: (.NET) Конверт ArrayList в string[] ???
От: TK Лес кывт.рф
Дата: 07.07.04 17:27
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

T>>К знатокам NET, подскажите...

WH>Даже такой кондовый С++ник как я смог решить эту задачу
WH>
WH>            string[] s=(string[])a.ToArray(typeof(string));
WH>


Как чистый С++ник нужно было и решать ее на С++. а пока — ты только своих позоришь...
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: (.NET) Конверт ArrayList в string[] ???
От: torrin  
Дата: 07.07.04 18:01
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, torrin, Вы писали:


T>>К знатокам NET, подскажите...

WH>Даже такой кондовый С++ник как я смог решить эту задачу
WH>
WH>            string[] s=(string[])a.ToArray(typeof(string));
WH>


to WH
Спасибо, Ваш метод заработал
Re[3]: (.NET) Конверт ArrayList в string[] ???
От: WolfHound  
Дата: 07.07.04 18:09
Оценка:
Здравствуйте, TK, Вы писали:

TK>Как чистый С++ник нужно было и решать ее на С++. а пока — ты только своих позоришь...

Можно и на С++
int main()
{
    ArrayList* a=new ArrayList();
    a->Add(new String("qwe"));
    String* s[]=__try_cast<String*[]>(a->ToArray(__typeof(String)));
    return 0;
}
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.