Вопрос

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

<Ол>
  • Неверный указатель ранга: ожидается ',' или ']'
  • Невозможно применить индексирование с помощью [] к выражению типа 'int'
  • Можете ли вы помочь, пожалуйста?

        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);
            }
        }
    
    Это было полезно?

    Решение

    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);
                }
            }
        }
    }
    

    Другие советы

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

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

    Для 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 (множественное число).

    Почему бы не следующее для # 1?

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

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

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

    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, они очень важны.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top