Domanda

Ciao ragazzi, ho scritto questo codice e ho due errori.

  1. Identificatore di classificazione non valido: previsto ',' o ']'
  2. Impossibile applicare l'indicizzazione con [] a un'espressione di tipo 'int'

Potete aiutarmi per favore?

    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);
        }
    }
È stato utile?

Soluzione

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

Altri suggerimenti

1 - Non è necessario specificare la lunghezza dell'array, basta dire new int []

2 - il numero è solo un numero intero, penso che tu stia provando ad accedere ai numeri [i]

Per 1:

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

Per 2:

int number = (int)numbers[i];

Stai usando numero dove dovresti avere numeri (plurale).

Perché non quanto segue per # 1?

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

Nonostante lo dichiari come int [12] (come l'intento apparente?), sembra che stiamo usando solo i valori da 10 a 1, inclusi. Perché usare un foreach in questo scenario, quando un per è molto più chiaro nelle sue intenzioni?

Dovresti inizializzare l'array come

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

il compilatore imposterà la dimensione per te. Ma lo stai facendo nel modo più duro. Prova questo:

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

Se si utilizza .Net 3.5, è anche possibile utilizzare System.Linq.Enumerable per creare un intervallo:

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

Questo prenderebbe il posto di ArrayList, che è abbastanza inutile in 3.5. Da quando hai appena iniziato, ArrayList sarà probabilmente più facile da capire all'inizio, ma tieni a mente cose come Generics e IEnumerables, sono molto importanti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top