2015-10-25 2 views
0

У меня есть очень простой код:Как преобразовать ArrayList в междунар

ArrayList array = new ArrayList(); 
int var1 = 10; 
int var2; 

array.Add(var1); 
var2 = array[0]; 

и Visual Studio показывает ошибку, как я ожидал:

Не удается неявно преобразовать тип объекта в целое .. ..

Я знаю, что я могу использовать явное преобразование, как этот:

var2 = (int)array[0]; 

или

var2 = Convert.ToInt32(array[0]); 

Я нашел этот вопрос, на какой-то викторины, и, к сожалению, эти 2 ответов не предлагались, а также правильный ответ, который они отметили:

var2 = ((List<int>)array)[0]; 

Я проверил это решение, и есть еще одна ошибка в VS.

Я что-то упустил, или они просто ошиблись, отметив этот ответ как правильный?

+6

Почему ArrayList? Не можете ли вы просто использовать Список ? – Camo

+0

Ну, я нашел этот вопрос в этой форме, поэтому я предполагаю, что важно оставаться ArrayList –

+2

'ArrayList' устарел, ищите новый материал. –

ответ

-1

Я попробовал ((List<int>)array) и VS выбрал, пожалуйста, следующее исключение.

Compilation error (line 16, col 17): Cannot convert type 'System.Collections.ArrayList' to 'System.Collections.Generic.List<int>' 

Итак, я согласен с тобой, что отмеченный ответ неверен.

Кроме того, хочу знать, что там был какой-либо вариант с футляром как

var2 = array.Cast<int>().First(); 
+0

Нет, не было –

-1

Существует ошибка с кодом ... вы можете преобразовать элементы списка массива в список Generic, а затем можно выбрать любой элемент из что Generic Collection. вот правильный код

var2= ((List<int>)array[0])[0]; 
+0

Ошибка была упомянута в вопросе. Вы проверили это? –

+0

Вы не сможете использовать 'int' для' List 'независимо от того, насколько сильно вы пытаетесь. –

+0

Исправлено необработанное исключение, я его протестировал. –

Смежные вопросы