Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press
Buy directly from Paradoxal Press at $33.99 (Save 43%)
Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA
|
Listing 14-36 extracted from chapter Unsafe code, exceptions, anonymous methods, iterators
Listing 14-35< > Listing 14-37
This listing can be compiled with the command line: csc.exe /target:exe Example_14_36.cs Errors: 0 Warnings: 0
Example_14_36.cs
using System.Collections;
public class Persons { // Doesn't implement IEnumerable!
private class PersonsEnumerator : IEnumerator {
private int index = -1;
private Persons P;
public PersonsEnumerator(Persons p){ this.P = p; }
public bool MoveNext() {
index++;
return index < P.m_Names.Length;
}
public void Reset() { index = -1; }
public object Current { get { return P.m_Names[index]; } }
}
private class PersonsEnumerable : IEnumerable{
private Persons m_Persons;
internal PersonsEnumerable(Persons persons) {
m_Persons = persons;
}
IEnumerator IEnumerable.GetEnumerator(){
return new PersonsEnumerator(m_Persons);
}
}
public IEnumerable InOrder{ get {return new PersonsEnumerable(this);} }
public IEnumerator GetEnumerator(){
return new PersonsEnumerator(this);
}
string[] m_Names;
public Persons(params string[] Names){
m_Names = new string[Names.Length];
Names.CopyTo(m_Names, 0);
}
private string this[int index]{
get { return m_Names[index]; }
set { m_Names[index] = value; }
}
}
class Program {
static void Main() {
Persons arrPersons = new Persons(
"Michel", "Christine", "Mathieu", "Julien");
foreach (string s in arrPersons.InOrder)
System.Console.WriteLine(s);
}
}
Copyright Patrick Smacchia 2006 2007
|