C# 如何使用forloop来实例化/向列表中添加大量员工(均命名为Joe)?
注意:此问题已修改,因此如果您正在阅读回答,请记住,此问题以前要求每个员工提供不同的名字数据。现在他们都叫乔 我创建了一个foreachloop,它应该遍历多个列表(每个属性一个列表),并实例化一个名为Joe、姓和ID号的employee对象。所有员工的名字必须是“Joe”,但姓氏和身份证号码不同。然后,它会将每个新员工添加到一个名为“员工”的列表中。我已经设置了名、名和ID的列表,但当我试图在控制台上打印员工列表时,它只打印一名员工的信息,5次。循环似乎只执行每个列表中的第一项。名字应该是这样(Joe是列表中唯一的项目),但每次都应该转到其他姓氏和ID号 另外:很多人都说,foreach不是一个好的方式去做这件事;但是我的任务特别要求我使用foreach循环来填充这个列表。我不确定他们都叫乔会不会让事情变得复杂,但这正是我需要做的 Employee是它自己的类,列表在程序文件中。我在下面都贴了。答案可能是显而易见的,但如果你能看看哪里出了问题,我将不胜感激。我需要foreach循环为属性列表中的每个项目创建一个employee对象,然后将它们的信息打印到控制台。非常感谢你!(感谢您在编辑之前的回复。我现在正在测试您的解决方案,并将在更新时更新!) 员工档案: 程序文件:C# 如何使用forloop来实例化/向列表中添加大量员工(均命名为Joe)?,c#,loops,class,foreach,C#,Loops,Class,Foreach,注意:此问题已修改,因此如果您正在阅读回答,请记住,此问题以前要求每个员工提供不同的名字数据。现在他们都叫乔 我创建了一个foreachloop,它应该遍历多个列表(每个属性一个列表),并实例化一个名为Joe、姓和ID号的employee对象。所有员工的名字必须是“Joe”,但姓氏和身份证号码不同。然后,它会将每个新员工添加到一个名为“员工”的列表中。我已经设置了名、名和ID的列表,但当我试图在控制台上打印员工列表时,它只打印一名员工的信息,5次。循环似乎只执行每个列表中的第一项。名字应该是这样
namespace CSDrill\u循环
{
班级计划
{
静态void Main(字符串[]参数)
{
列出员工=新列表();
列表名=新列表()
{
“乔”
};
List lastnames=新列表()
{
“杰克逊”、“史密斯”、“米勒”、“特纳”、“约翰逊”
};
列表ID=新列表()
{
34332, 54754, 43523, 87012, 43158
};
foreach(名字中的字符串firstname)
{
foreach(lastnames中的字符串lastname)
{
foreach(ID中的int-ID)
{
Employee对象=新员工();
Employeeobject.firstname=firstname;
Employeeobject.lastname=lastname;
Employeeobject.ID=ID;
添加(Employeeobject);
foreach(员工中的员工)
{
Console.WriteLine(Employeeobject.firstname+“”+Employeeobject.lastname+“”+Employeeobject.ID);
}
Console.ReadLine();
}
}
}
}
}
}
您可能需要for循环而不是foreach循环。注意范围异常的索引
for (int i = 0; i < firstnames.Length; i++)
{
Employee Employeeobject = new Employee();
Employeeobject.firstname = firstnames[i]; //get item by index
Employeeobject.lastname = lastnames[i];
Employeeobject.ID = IDs[i];
Employees.Add(Employeeobject);
}
for(int i=0;i
它应该更像
**Employee file:**
namespace CSDrill_Loop
{
public class Employee
{
public string firstname { get; set; }
public string lastname { get; set; }
public int ID { get; set; }
public Employee(string _firstName, string _lastName, int _ID)
{
firstname = _firstName;
lastName = _lastName;
ID = _ID;
}
}
}
**Program file:**
namespace CSDrill_Loop
{
class Program
{
static void Main(string[] args)
{
List<Employee> Employees = new List<Employee>();
List<string> firstnames = new List<string>()
{
"Bob", "Jeff", "Dale", "Kate", "Ann"
};
List<string> lastnames = new List<string>()
{
"Jackson", "Smith", "Miller", "Turner", "Johnson"
};
List<int> IDs = new List<int>()
{
34332, 54754, 43523, 87012, 43158
};
for(int i = 0; i < firstNames.length; i++)
{
Employees.Add(new Employee(firstNames[i], lastNames[i], IDs[i]));
}
}
}
}
这个问题对于foreach循环来说真的没有意义,因为您有3个单独的列表,其中的数据是这样排列的。我猜是对作业或输入数据结构有误解。无论哪种方法,如果需要的话,唯一真正做到这一点的方法是有一个索引列表来循环,并使用它来访问不同的列表。像这样的东西应该适合你。此外,在foreach循环中不应该有readline语句或任何输入
List<Employee> Employees = new List<Employee>();
List<string> firstnames = new List<string>()
{
"Bob", "Jeff", "Dale", "Kate", "Ann"
};
List<string> lastnames = new List<string>()
{
"Jackson", "Smith", "Miller", "Turner", "Johnson"
};
List<int> IDs = new List<int>()
{
34332, 54754, 43523, 87012, 43158
};
List<int> indexes = new List<int>()
{
0, 1, 2, 3, 4
};
foreach (int index in indexes)
{
Employee Employeeobject = new Employee();
Employeeobject.firstname = firstnames[index];
Employeeobject.lastname = lastnames[index];
Employeeobject.ID = IDs[index];
Employees.Add(Employeeobject);
}
foreach (Employee Employee in Employees)
{
Console.WriteLine(Employee.firstname + " " + Employee.lastname + " " + Employee.ID);
}
Console.ReadLine();
List Employees=newlist();
列表名=新列表()
{
“鲍勃”、“杰夫”、“戴尔”、“凯特”、“安”
};
List lastnames=新列表()
{
“杰克逊”、“史密斯”、“米勒”、“特纳”、“约翰逊”
};
列表ID=新列表()
{
34332, 54754, 43523, 87012, 43158
};
列表索引=新列表()
{
0, 1, 2, 3, 4
};
foreach(索引中的int索引)
{
Employee对象=新员工();
Employeeobject.firstname=名字[索引];
Employeeobject.lastname=lastnames[index];
Employeeobject.ID=IDs[index];
添加(Employeeobject);
}
foreach(员工中的员工)
{
Console.WriteLine(Employee.firstname+“”+Employee.lastname+“”+Employee.ID);
}
Console.ReadLine();
之所以只能看到1名员工的信息,是因为这一行:
Console.ReadLine()
在按enter键之前,应用程序不会运行
但整个逻辑也有点复杂,因为最终输出类似于:
A、 A,B,A,B,C,A,B,C,D…(还有115名员工!)
而不是:
A、 B、C、D、E(5名员工)
因此,根据您提供的信息,我不认为只有一个foreach循环可以实现此目的。这是您关于打印的问题: 移除/CommentConsole.Readline()并将其放置在最外层的foreachloop(即名字)的末尾。
根据forloop的嵌套,您将得到5*5*5=125个条目。您需要将最后一个foreach循环移到其他3个列表之外,所有3个列表的长度始终相同?FrankerZ:我尝试过,但由于某些原因,它抛出了很多错误。好的建议思想代码:他们可能并不总是每个都有5个项目,但可能每个员工都有名字和姓氏,以及和ID,所以他们的长度相同。谢谢!这太棒了。由于某种原因,它
**Employee file:**
namespace CSDrill_Loop
{
public class Employee
{
public string firstname { get; set; }
public string lastname { get; set; }
public int ID { get; set; }
public Employee(string _firstName, string _lastName, int _ID)
{
firstname = _firstName;
lastName = _lastName;
ID = _ID;
}
}
}
**Program file:**
namespace CSDrill_Loop
{
class Program
{
static void Main(string[] args)
{
List<Employee> Employees = new List<Employee>();
List<string> firstnames = new List<string>()
{
"Bob", "Jeff", "Dale", "Kate", "Ann"
};
List<string> lastnames = new List<string>()
{
"Jackson", "Smith", "Miller", "Turner", "Johnson"
};
List<int> IDs = new List<int>()
{
34332, 54754, 43523, 87012, 43158
};
for(int i = 0; i < firstNames.length; i++)
{
Employees.Add(new Employee(firstNames[i], lastNames[i], IDs[i]));
}
}
}
}
int i = 0;
foreach(var firstName in firstNames)
{
Employees.Add(new Employee(firstName, lastNames[i], IDs[i]));
i++;
}
List<Employee> Employees = new List<Employee>();
List<string> firstnames = new List<string>()
{
"Bob", "Jeff", "Dale", "Kate", "Ann"
};
List<string> lastnames = new List<string>()
{
"Jackson", "Smith", "Miller", "Turner", "Johnson"
};
List<int> IDs = new List<int>()
{
34332, 54754, 43523, 87012, 43158
};
List<int> indexes = new List<int>()
{
0, 1, 2, 3, 4
};
foreach (int index in indexes)
{
Employee Employeeobject = new Employee();
Employeeobject.firstname = firstnames[index];
Employeeobject.lastname = lastnames[index];
Employeeobject.ID = IDs[index];
Employees.Add(Employeeobject);
}
foreach (Employee Employee in Employees)
{
Console.WriteLine(Employee.firstname + " " + Employee.lastname + " " + Employee.ID);
}
Console.ReadLine();