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