Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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# 如何使用forloop来实例化/向列表中添加大量员工(均命名为Joe)?_C#_Loops_Class_Foreach - Fatal编程技术网

C# 如何使用forloop来实例化/向列表中添加大量员工(均命名为Joe)?

C# 如何使用forloop来实例化/向列表中添加大量员工(均命名为Joe)?,c#,loops,class,foreach,C#,Loops,Class,Foreach,注意:此问题已修改,因此如果您正在阅读回答,请记住,此问题以前要求每个员工提供不同的名字数据。现在他们都叫乔 我创建了一个foreachloop,它应该遍历多个列表(每个属性一个列表),并实例化一个名为Joe、姓和ID号的employee对象。所有员工的名字必须是“Joe”,但姓氏和身份证号码不同。然后,它会将每个新员工添加到一个名为“员工”的列表中。我已经设置了名、名和ID的列表,但当我试图在控制台上打印员工列表时,它只打印一名员工的信息,5次。循环似乎只执行每个列表中的第一项。名字应该是这样

注意:此问题已修改,因此如果您正在阅读回答,请记住,此问题以前要求每个员工提供不同的名字数据。现在他们都叫乔

我创建了一个foreachloop,它应该遍历多个列表(每个属性一个列表),并实例化一个名为Joe、姓和ID号的employee对象。所有员工的名字必须是“Joe”,但姓氏和身份证号码不同。然后,它会将每个新员工添加到一个名为“员工”的列表中。我已经设置了名、名和ID的列表,但当我试图在控制台上打印员工列表时,它只打印一名员工的信息,5次。循环似乎只执行每个列表中的第一项。名字应该是这样(Joe是列表中唯一的项目),但每次都应该转到其他姓氏和ID号

另外:很多人都说,foreach不是一个好的方式去做这件事;但是我的任务特别要求我使用foreach循环来填充这个列表。我不确定他们都叫乔会不会让事情变得复杂,但这正是我需要做的

Employee是它自己的类,列表在程序文件中。我在下面都贴了。答案可能是显而易见的,但如果你能看看哪里出了问题,我将不胜感激。我需要foreach循环为属性列表中的每个项目创建一个employee对象,然后将它们的信息打印到控制台。非常感谢你!(感谢您在编辑之前的回复。我现在正在测试您的解决方案,并将在更新时更新!)

员工档案: 程序文件:
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();