<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FClass_Interface%2FIEnumerator</id>
		<title>Csharp/C Sharp/Class Interface/IEnumerator - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FC_Sharp%2FClass_Interface%2FIEnumerator"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/IEnumerator&amp;action=history"/>
		<updated>2026-04-29T21:21:51Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/IEnumerator&amp;diff=560&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/IEnumerator&amp;diff=560&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:18Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 15:31, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/IEnumerator&amp;diff=561&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/C_Sharp/Class_Interface/IEnumerator&amp;diff=561&amp;oldid=prev"/>
				<updated>2010-05-26T11:38:54Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Collection is iterated using the IEnumerator interface==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
public class Starter {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        SimpleCollection simple = new SimpleCollection(new object[] { 1, 2, 3, 4, 5, 6, 7 });&lt;br /&gt;
        IEnumerator enumerator = simple.GetEnumerator();&lt;br /&gt;
        while (enumerator.MoveNext()) {&lt;br /&gt;
            Console.WriteLine(enumerator.Current);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class SimpleCollection : IEnumerable {&lt;br /&gt;
    public SimpleCollection(object[] array) {&lt;br /&gt;
        items = array;&lt;br /&gt;
    }&lt;br /&gt;
    public IEnumerator GetEnumerator() {&lt;br /&gt;
        return new Enumerator(items);&lt;br /&gt;
    }&lt;br /&gt;
    private object[] items = null;&lt;br /&gt;
}&lt;br /&gt;
public class Enumerator : IEnumerator {&lt;br /&gt;
    public Enumerator(object[] items) {&lt;br /&gt;
        elements = new object[items.Length];&lt;br /&gt;
        Array.Copy(items, elements, items.Length);&lt;br /&gt;
        cursor = -1;&lt;br /&gt;
    }&lt;br /&gt;
    public bool MoveNext() {&lt;br /&gt;
        ++cursor;&lt;br /&gt;
        if (cursor &amp;gt; (elements.Length - 1)) {&lt;br /&gt;
            return false;&lt;br /&gt;
        }&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    public void Reset() {&lt;br /&gt;
        cursor = -1;&lt;br /&gt;
    }&lt;br /&gt;
    public object Current {&lt;br /&gt;
        get {&lt;br /&gt;
            if (cursor &amp;gt; (elements.Length - 1)) {&lt;br /&gt;
                throw new InvalidOperationException(&amp;quot;Enumeration already finished&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            if (cursor == -1) {&lt;br /&gt;
                throw new InvalidOperationException(&lt;br /&gt;
                    &amp;quot;Enumeration not started&amp;quot;);&lt;br /&gt;
            }&lt;br /&gt;
            return elements[cursor];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    private int cursor;&lt;br /&gt;
    private object[] elements = null;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==IEnumerator Example (Static Collection)==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
public class SimpleCollection : IEnumerable {&lt;br /&gt;
    public SimpleCollection(object[] array) {&lt;br /&gt;
        items = array;&lt;br /&gt;
    }&lt;br /&gt;
    public IEnumerator GetEnumerator() {&lt;br /&gt;
        return new Enumerator(this);&lt;br /&gt;
    }&lt;br /&gt;
    private class Enumerator : IEnumerator {&lt;br /&gt;
        public Enumerator(SimpleCollection obj) {&lt;br /&gt;
            oThis = obj;&lt;br /&gt;
            cursor = -1;&lt;br /&gt;
        }&lt;br /&gt;
        public bool MoveNext() {&lt;br /&gt;
            ++cursor;&lt;br /&gt;
            if (cursor &amp;gt; (oThis.items.Length - 1)) {&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        public void Reset() {&lt;br /&gt;
            cursor = -1;&lt;br /&gt;
        }&lt;br /&gt;
        public object Current {&lt;br /&gt;
            get {&lt;br /&gt;
                if (cursor &amp;gt; (oThis.items.Length - 1)) {&lt;br /&gt;
                    throw new InvalidOperationException(&lt;br /&gt;
                        &amp;quot;Enumeration already finished&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                if (cursor == -1) {&lt;br /&gt;
                    throw new InvalidOperationException(&lt;br /&gt;
                        &amp;quot;Enumeration not started&amp;quot;);&lt;br /&gt;
                }&lt;br /&gt;
                return oThis.items[cursor];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        private int cursor;&lt;br /&gt;
        private SimpleCollection oThis;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    private object[] items = null;&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==iterates two collections simultaneously==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
public class Starter {&lt;br /&gt;
    public static void Main() {&lt;br /&gt;
        MyClass obj = new MyClass();&lt;br /&gt;
        foreach (int item in obj) {&lt;br /&gt;
            Console.Write(item);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MyClass {&lt;br /&gt;
    private int[] list1 = new int[] { 0, 2, 4, 6, 8 };&lt;br /&gt;
    private int[] list2 = new int[] { 1, 3, 5, 7, 9 };&lt;br /&gt;
    public IEnumerator&amp;lt;int&amp;gt; GetEnumerator() {&lt;br /&gt;
        for (int index = 0; index &amp;lt; 4; ++index) {&lt;br /&gt;
            yield return list1[index];&lt;br /&gt;
            yield return list2[index];&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==yield IEnumerator==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Text;&lt;br /&gt;
&lt;br /&gt;
public class Primes {&lt;br /&gt;
    private long min;&lt;br /&gt;
    private long max;&lt;br /&gt;
    public Primes(long minimum, long maximum) {&lt;br /&gt;
        min = minimum;&lt;br /&gt;
        max = maximum;&lt;br /&gt;
    }&lt;br /&gt;
    public IEnumerator GetEnumerator() {&lt;br /&gt;
        for (long possiblePrime = min; possiblePrime &amp;lt;= max; possiblePrime++) {&lt;br /&gt;
            bool isPrime = true;&lt;br /&gt;
            for (long possibleFactor = 2; possibleFactor &amp;lt;= (long)Math.Floor(Math.Sqrt(possiblePrime)); possibleFactor++) {&lt;br /&gt;
                long remainderAfterDivision = possiblePrime % possibleFactor;&lt;br /&gt;
                if (remainderAfterDivision == 0) {&lt;br /&gt;
                    isPrime = false;&lt;br /&gt;
                    break;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            if (isPrime) {&lt;br /&gt;
                yield return possiblePrime;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
class Program {&lt;br /&gt;
    static void Main(string[] args) {&lt;br /&gt;
        Primes primesFrom2To1000 = new Primes(2, 1000);&lt;br /&gt;
        foreach (long i in primesFrom2To1000)&lt;br /&gt;
            Console.Write(&amp;quot;{0} &amp;quot;, i);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>