質問

こんにちは、このコードを書いたのですが、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);
        }
    }
役に立ちましたか?

解決

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-数字は単なる整数です。数字にアクセスしようとしています[i]

1の場合:

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

2の場合:

int number = (int)numbers[i];

number (複数)が必要な場所で number を使用しています。

#1の場合はどうですか?

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

これをint [12]として宣言しているにもかかわらず(明らかな意図として?)、10から1までの値のみを使用しているようです。 for の意図がより明確な場合に、このシナリオで 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