C# 使基于数组的类在C中可枚举#

C# 使基于数组的类在C中可枚举#,c#,types,enumerable,C#,Types,Enumerable,好吧,在过去的一个多小时里,我一直在努力理解这一点。所以我想知道是否有人能向我解释这一点 我想让C#中的类可以枚举。具体来说,我正试图使它与foreach循环一起工作。我对一个简单的类进行了测试,在构造函数中引入了字符 EmployeeArray ArrayOfEmployees = new EmployeeArray('a','b','c'); foreach(char e in EmployeeArray) //Nope, can't do this! { Console.WriteLin

好吧,在过去的一个多小时里,我一直在努力理解这一点。所以我想知道是否有人能向我解释这一点

我想让C#中的类可以枚举。具体来说,我正试图使它与foreach循环一起工作。我对一个简单的类进行了测试,在构造函数中引入了字符

EmployeeArray ArrayOfEmployees = new EmployeeArray('a','b','c');

foreach(char e in EmployeeArray) //Nope, can't do this!
{
Console.WriteLine(e);
}

//---Class Definition:---

class EmployeeArray
{
    private char[] Employees;
    public EmployeeChars(char[] e)
    {
        this.Employees = e;
    }
    //Now for my attempt at making it enumerable:
    public IEnumerator GetEnumerator(int i)
    {
        return this.Employees[i];
    }
}

我建议您坚持使用一个简单的
列表
。这是一个通用的收集结构,为您完成所有繁重的工作。实际上,在完全理解系统的工作原理之前,创建自己的IEnumerables是没有意义的

首先,将类更改为表示单个项:

public class Employee
{
    public string Name {get;set;}
    //add additional properties
}
然后制作一个
列表
对象

List<Employee> employees = new List<Employee>();
employees.Add(new Employee() { Name = "John Smith" });

foreach(Employee emp in employees)
    Console.WriteLine(emp.Name);
List employees=newlist();
Add(newemployee(){Name=“John Smith”});
foreach(员工中的员工emp)
控制台写入线(emp.Name);

如果您真的想开始制作自己的IEnumerables,请查看,其中有一个很好的示例。

是这样的吗?顺便说一句,您不能将该类用作集合,因为它是一个类型。您需要使用声明的变量来访问它

// You cant use EmployeeArray, instead use ArrayOfEmployees 
foreach(char e in **EmployeeArray**) 
{
   Console.WriteLine(e);
}
总之,我是这样做的

class Program
    {
        static void Main(string[] args)
        {
            Collection collect = new Collection(new string[]{"LOL1","LOL2"});
            foreach (string col in collect)
            {
                Console.WriteLine(col + "\n");
            }
            Console.ReadKey();
        }
    }

    public class Collection : IEnumerable
    {
        private Collection(){}
        public string[] CollectedCollection { get; set; }
        public Collection(string[] ArrayCollection)
        {
            CollectedCollection = ArrayCollection;
        }

        public IEnumerator GetEnumerator()
        {
            return this.CollectedCollection.GetEnumerator();
        }
    }

您需要为类实现
IEnumerable
。但是为什么不制作一个
列表
而不是自己的集合类呢?实现IEnumerable意味着什么?这听起来像是我需要做的。(因为我想弄清楚这一点,所以我希望能够创建自己的集合类!)