C# 如何在类的列表类型上使用foreach循环?

C# 如何在类的列表类型上使用foreach循环?,c#,foreach,C#,Foreach,以下是我的班级结构: public class Emp_Details : IEnumerable { public List<Employee> lstEmployee{ get; set; } } public class Employee { public string Name{ get; set; } public int Age{ get; set; } public string Address{ get; set; } } 公共

以下是我的班级结构:

public class Emp_Details : IEnumerable
{
    public List<Employee> lstEmployee{ get; set; }
}
public class Employee
{        public string Name{ get; set; }
    public int Age{ get; set; }
    public string Address{ get; set; }
}
公共类Emp\u详细信息:IEnumerable
{
公共列表{get;set;}
}
公营雇员
{公共字符串名称{get;set;}
公共整数{get;set;}
公共字符串地址{get;set;}
}
以下是我试图做的:

Emp_Details obj = new Emp_Details();
obj.lstEmployee = new List<Employee>();
Employee objEmp= new Employee();
objEmp.Name="ABC";
objEmp.Age=21;
objEmp.Address="XYZ";
obj.lstEmployee.Add(objEmp);
foreach(var emp in obj)
{
              //some code
}
Emp_Details obj=新Emp_Details();
obj.lstmemployee=新列表();
Employee objEmp=新员工();
objEmp.Name=“ABC”;
对象年龄=21岁;
对象地址=“XYZ”;
obj.LSTMPLOYEE.Add(objEmp);
foreach(obj中的var emp)
{
//一些代码
}
我想在
列表lstmemployee
但是我越来越

Emp_详细信息未实现接口成员“System.Collections.IEnumerable.GetEnumerator()”


有人能帮我吗?

只需从
Emp\u详细信息的声明中删除基本接口即可:

public class Emp_Details
{
    public List<Employee> lstEmployee{ get; set; }
}
Emp_Details empDetails = new Emp_Details();
// add employees to the inner list
empDetails.lstEmployee.Add(new Employee(...));
empDetails.lstEmployee.Add(new Employee(...));
empDetails.lstEmployee.Add(new Employee(...));

// iterate over empDetails using foreach
foreach(Employee emp in empDetails)
{
    //
}
公共类Emp\u详细信息
{
公共列表{get;set;}
}

问题在于,您在语法中声明您的
Emp\u Details
类实现了
IEnumerable
,但实际上并没有实现它。您可以简单地删除声明,并按照其他人的建议直接枚举基础列表,或者如果您确实希望
Emp_Details
本身是可枚举的,则必须实现
IEnumerable
GetEnumerator
方法(只需返回内部列表的枚举器):


另外,由于您的
Emp_Details
类似乎是一个集合,因此实现一个集合接口并公开
Add
Remove
等方法而不是直接公开底层的
lstEmployee

您必须实现Ienumerable的GetEnumerator方法

public class Emp_Details : IEnumerable
    {
        public List<Employee> lstEmployee { get; set; }


        public IEnumerator GetEnumerator()
        {
            throw new NotImplementedException("You must implement this");
        }
    }
公共类Emp\u详细信息:IEnumerable
{
公共列表{get;set;}
公共IEnumerator GetEnumerator()
{
抛出新的NotImplementedException(“您必须实现它”);
}
}

删除
:IEnumerable
-您没有实现它。在使用它之前,您还需要确保
lstEmployee
已初始化。您可能想在
Emp\u Details
中添加一个构造函数,并在那里执行。即使将其设置为空列表也比什么都没有好。第一次尝试仅使用该选项。但它给了我一个例外,它不包含“GetEnumerator”的公共定义。确切的异常文本(或错误消息)是什么?
public class Emp_Details : IEnumerable
    {
        public List<Employee> lstEmployee { get; set; }


        public IEnumerator GetEnumerator()
        {
            throw new NotImplementedException("You must implement this");
        }
    }