2008-10-23 5 views
0

Привет, ребята, я написал этот код, и у меня две ошибки.Почему этот код не работает?

  1. Invalid ранга спецификатор: ожидается '' или ']'
  2. Невозможно применить индексирование с [] к выражению типа '' междунар

Вы можете помочь, пожалуйста?

static void Main(string[] args) 
    { 
     ArrayList numbers = new ArrayList(); 

     foreach (int number in new int[12] {10,9,8,7,6,5,4,3,2,1}) //error No.1 
     { 
      numbers.Add(number); 
     } 

     numbers.Insert(numbers.Count - 1, 75); 
     numbers.Remove(7); 
     numbers.RemoveAt(6); 

     for(int i=0; i<numbers.Count; i++) 
     { 
      int number = (int) number[i]; // error No.2 
      Console.WriteLine(number); 
     } 
    } 
+0

Этот код не читается. Используйте разметку, доступную для отображения кода. – JesperE 2008-10-23 20:27:53

+0

Отметьте весь свой код четырьмя пробелами, чтобы сделать его более читаемым ... – 2008-10-23 20:30:17

+0

@arin, проверьте и убедитесь, что я отформатировал это право. Похоже, что Markup не позволит вам сделать 4 уровня отступа ...? – 2008-10-23 20:31:27

ответ

3
using System; 
using System.Collections; 

namespace ConsoleApplication3 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      ArrayList numbers = new ArrayList(); 
      foreach (int number in new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }) 
      { 
       numbers.Add(number); 
      } 
      numbers.Insert(numbers.Count - 1, 75); 
      numbers.Remove(7); 
      numbers.RemoveAt(6); 
      for (int i = 0; i < numbers.Count; i++) 
      { 
       int number = (int)numbers[i]; 
       Console.WriteLine(number); 
      } 
     } 
    } 
} 
6

1 - Вы не должны указать длину массива просто сказать, новый INT []

2 - число только целое число, я думаю, что вы пытаетесь получить доступ к номеру [I ]

4

Для 1:

foreach (int number in new int[] {10,9,8,7,6,5,4,3,2,1}) 

Для 2:

int number = (int)numbers[i]; 

Вы используете number, где у вас должно быть numbers (множественное число).

0

Вы должны инициализировать массив в качестве

new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 }; 

компилятор установит размер для вас. Но вы делаете это с трудом. Попробуйте это:

for (int i = 10; i > 0; i--) 
{ 
    numbers.Add(i); 
} 

Если вы используете .NET 3.5, вы можете также использовать System.Linq.Enumerable создать диапазон:

IEnumerable<int> numbers = Enumerable.Range(1, 10).Reverse(); 

Это занять место в ArrayList, который довольно бессмысленно в 3.5. Поскольку вы только начинаете, ArrayList, вероятно, будет легче понять сначала, но сохраните такие вещи, как Generics и IEnumerables, они очень важны.

0

Почему не следующее за # 1?

for (int x = 10; x > 0; --x) 
    { 
     numbers.Add(number); 
    } 

Несмотря объявляя это как межды [12] (как явное намерение?), Кажется, что мы используем только значение от 10 до 1 включительно. Зачем использовать foreach в этом сценарии, когда for гораздо более ясно в своем намерении?

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