Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Windows.Forms;
- namespace WindowsFormsApplication1
- {
- public class Person
- {
- public Person(string fName, string lName)
- {
- this.firstName = fName;
- this.lastName = lName;
- }
- public string firstName;
- public string lastName;
- }
- public class People : IEnumerable
- {
- private Person[] _people;
- public People(Person[] pArray)
- {
- _people = new Person[pArray.Length];
- for (int i = 0; i < pArray.Length; i++)
- {
- _people[i] = pArray[i];
- }
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- return (IEnumerator)GetEnumerator();
- }
- public PeopleEnum GetEnumerator()
- {
- return new PeopleEnum(_people);
- }
- }
- public class PeopleEnum : IEnumerator
- {
- public Person[] _people;
- // Enumerators are positioned before the first element
- // until the first MoveNext() call.
- int position = -1;
- public PeopleEnum(Person[] list)
- {
- _people = list;
- }
- public bool MoveNext()
- {
- position++;
- return (position < _people.Length);
- }
- public void Reset()
- {
- position = -1;
- }
- object IEnumerator.Current
- {
- get
- {
- return Current;
- }
- set
- {
- _people[position] = null;
- }
- }
- public Person Current
- {
- get
- {
- try
- {
- return _people[position];
- }
- catch (IndexOutOfRangeException)
- {
- throw new InvalidOperationException();
- }
- }
- set
- {
- _people[position] = value;
- }
- }
- }
- public class badClass
- {
- public badClass(ref Person prs)
- {
- prs = new Person("Bai", "Hui");
- }
- }
- public partial class Form1 : Form
- {
- public Form1()
- {
- InitializeComponent();
- }
- private void button1_Click(object sender, EventArgs e)
- {
- Person[] peopleArray = new Person[3]
- {
- new Person("John", "Smith"),
- new Person("Jim", "Johnson"),
- new Person("Sue", "Rabon"),
- };
- People peopleList = new People(peopleArray);
- PeopleEnum tmp = peopleList.GetEnumerator();
- while (tmp.MoveNext())
- {
- badClass baddie = new badClass(ref tmp.Current);
- }
- tmp.Reset();
- while (tmp.MoveNext())
- {
- Console.WriteLine(tmp.Current.firstName+" "+tmp.Current.lastName);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement