1

さて、私はこの 1 時間ほどの間、これを理解するために真剣に取り組んできました。だから、誰かが私にこれを説明できるかどうか疑問に思っています。

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];
    }
}
4

2 に答える 2

0

シンプルなものに固執することをお勧めしますList<>。これは、すべての面倒な作業を行う一般的なコレクション構造です。実際、システムがどのように機能するかを完全に理解するまで、独自の IEnumerables を作成しても意味がありません。

まず、単一のアイテムを表すクラスに変更します。

public class Employee
{
    public string Name {get;set;}
    //add additional properties
}

次に、List<Employee>オブジェクトを作成します

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

foreach(Employee emp in employees)
    Console.WriteLine(emp.Name);

本当に独自の IEnumerables を作成したい場合は、msdn のページを参照してください。良い例があります。

于 2013-09-28T22:02:59.917 に答える