Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将方法应用于列表中类的所有实例_C#_List_Foreach - Fatal编程技术网

C# 将方法应用于列表中类的所有实例

C# 将方法应用于列表中类的所有实例,c#,list,foreach,C#,List,Foreach,我正在学习C#,作为初学者练习,我尝试编写一个简单的铁拳锦标赛花名册。问题是,我找不到一种方法如何将classFighter方法应用于整个Fighter列表,因为没有变量的名称,或者至少我认为这就是问题所在 using System; using System.Collections.Generic; namespace TekkenConsoleTournament { class MainClass { public static void Main (st

我正在学习C#,作为初学者练习,我尝试编写一个简单的铁拳锦标赛花名册。问题是,我找不到一种方法如何将class
Fighter
方法应用于整个Fighter列表,因为没有变量的名称,或者至少我认为这就是问题所在

using System;
using System.Collections.Generic;

namespace TekkenConsoleTournament
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            Console.WriteLine ("Enter nicknames of players, finished by 0: \n");
            int numFighter=0;
            String nickname;
            List <Fighter> allFighters = new List<Fighter>();
            while ((nickname = Console.ReadLine()) != "") {
                allFighters.Add(new Fighter(nickname));
                numFighter ++;

            }
            Console.WriteLine(allFighters.ForEach(Fighter.getName()));

            Console.WriteLine(foreach(Fighter in allFighters) {getName();}); 

            //for (int counter = 0; counter <= fighter; counter++) {
            //  Fighter[counter.getName();
            //}
        }
    }
}

首先,我想打印所有战士的名字,然后可能是统计数据,然后作为练习,试着让代码记住谁与谁作战,并根据作战结果将它们放入二维矩阵中。

使用
foreach
循环

foreach(var fighter in allFighters)
{
    // do something with fighter
    var name = fighter.getName();
    Console.WriteLine(name);
}
如果没有使用
字段
属性
名称获取当前战斗机的名称,我假设有一个
getName
方法

您的错误是将
ForEach
循环放在
Console.WriteLine
方法中。您应该做相反的操作。此语法错误:

foreach(Fighter in allFighters)
应该是这样的:

foreach(Fighter fighter in allFighters)

或者您可以使用上述代码中所示的
var

您很接近,但还不完全接近。尝试以下选项:

Console.WriteLine(string.Join(", ", allFighters.Select(f => f.getName())));

allFighters.ForEach(fighter => Console.Writeline(fighter.getName()));


foreach (Fighter f in allFighters)
{
    Console.WriteLine(f.getName());
}

你能提供你的战斗机等级吗?你到底想要什么,显示所有战士的名字?你想要把Console.WriteLine代码放在foreach循环中。一些指针(约定):类、方法名和属性名应该是pascalcase(即public void DrawMatch())。仅获取/设置值的方法通常应该是属性(即,public String getName()应该是public String Name{get{return this.Name;}})。您可以(我想说应该)使用
String
而不是
String
(就像你使用
int
而不是
Int32
Hmm.。有什么特别的原因吗?从我使用Java开始,我就习惯了大写字母S。谢谢你的帮助。我想,如果我事先没有设置变量的名称,我就不能以那种方式使用它。再加上你,一切都可以用了。在我完成之后如果是这样,我会在这里发布完整的代码。
Console.WriteLine(string.Join(", ", allFighters.Select(f => f.getName())));

allFighters.ForEach(fighter => Console.Writeline(fighter.getName()));


foreach (Fighter f in allFighters)
{
    Console.WriteLine(f.getName());
}