0

私は何時間も探していましたが、何の答えも見つからないようです。foreachオブジェクト内のメソッドを使用してループを作成しようとしています。うまくいけば、あなたは私を理解して助けてくれるでしょう。

戦士.cs:

public void Info()
{
    Console.WriteLine("N: "
                      + this.name
                      + ", L: "
                      + this.level
                      + ", H: "
                      + this.health
                      + ", D: "
                      + this.damage
                      + ", A: "
                      + this.agility);
}

Program.cs:

List<Warrior> lista = new List<Warrior>();

for (int i = 0; i < 10; i++)
{
    lista.Add(new Warrior("Swordman" + i.ToString()));
}

foreach (Warrior item in lista)
{
    lista.Info();//<----------This is where I get the error
}
4

4 に答える 4

3

アイテムのインスタンスは、itemではなく に格納されます。lista

foreach (Warrior item in lista)
{
    item.Info();
}

forach は から GetEnumerator() を呼び出し、 のlista各要素を格納listaitemます。

詳細については、http: //msdn.microsoft.com/en-us/library/ttw7t8t6 (v=vs.71).aspx の foreach を参照してください。

于 2013-09-30T20:02:16.560 に答える
2

を使用し、使用itemしないでくださいlistalistaコレクションです。

    foreach (Warrior item in lista)
    {
        item.Info();//<----------This is where i get the error
    }
于 2013-09-30T20:02:14.297 に答える
2

メソッド自体ではなく、 でInfoメソッドを呼び出す必要があります。itemlista

foreach (Warrior item in lista)
{
    item.Info();//
}
于 2013-09-30T20:02:27.533 に答える
2

あなたの例は、リスト内のオブジェクトの 1 つのメンバーを実行したい LIST の Info() メンバーを実行しようとしています。これを試して:

item.Info();

それ以外の

lista.Info();
于 2013-09-30T20:04:39.003 に答える