0

こんにちは皆さん、私はこのコードを書きましたが、2 つのエラーがあります。

  1. 無効なランク指定子: ',' または ']' が必要です
  2. タイプ '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);
        }
    }
4

5 に答える 5

6

1 - new int[] と言うだけで配列の長さを指定する必要はありません

2 - 数値は単なる整数です。数値にアクセスしようとしていると思います[i]

于 2008-10-23T20:28:31.977 に答える
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(複数)。

于 2008-10-23T20:31:41.097 に答える
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);
            }
        }
    }
}
于 2008-10-23T20:36:43.970 に答える
0

#1に次のことをしないのはなぜですか?

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

これを int[12] として宣言しているにもかかわらず (明らかな意図として?)、10 から 1 までの値のみを使用しているようです。a の意図がはるかに明確なのに、なぜforeachこのシナリオで a を使用するのでしょうか。for

于 2008-10-23T20:38:02.190 に答える
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 などは非常に重要であることを覚えておいてください。

于 2008-10-23T20:32:27.600 に答える