<?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%2FCSharp_Tutorial%2FGeneric%2FGeneric_IEnumerator</id>
		<title>Csharp/CSharp Tutorial/Generic/Generic IEnumerator - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FGeneric%2FGeneric_IEnumerator"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Generic/Generic_IEnumerator&amp;action=history"/>
		<updated>2026-04-30T09:47:53Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Generic/Generic_IEnumerator&amp;diff=5261&amp;oldid=prev</id>
		<title> в 15:31, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Generic/Generic_IEnumerator&amp;diff=5261&amp;oldid=prev"/>
				<updated>2010-05-26T15:31:53Z</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/CSharp_Tutorial/Generic/Generic_IEnumerator&amp;diff=5262&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Generic/Generic_IEnumerator&amp;diff=5262&amp;oldid=prev"/>
				<updated>2010-05-26T12:14:44Z</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;==A generic iterator.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System; &lt;br /&gt;
using System.Collections.Generic; &lt;br /&gt;
 &lt;br /&gt;
class MyClass&amp;lt;T&amp;gt; { &lt;br /&gt;
  T[] array; &lt;br /&gt;
 &lt;br /&gt;
  public MyClass(T[] a) { &lt;br /&gt;
    array = a; &lt;br /&gt;
  } &lt;br /&gt;
 &lt;br /&gt;
  public IEnumerator&amp;lt;T&amp;gt; GetEnumerator() { &lt;br /&gt;
    foreach(T obj in array) &lt;br /&gt;
      yield return obj; &lt;br /&gt;
  } &lt;br /&gt;
} &lt;br /&gt;
 &lt;br /&gt;
class MainClass { &lt;br /&gt;
  public static void Main() { &lt;br /&gt;
    int[] nums = { 4, 3, 6, 4, 7, 9 }; &lt;br /&gt;
    MyClass&amp;lt;int&amp;gt; mc = new MyClass&amp;lt;int&amp;gt;(nums); &lt;br /&gt;
 &lt;br /&gt;
    foreach(int x in mc) &lt;br /&gt;
      Console.Write(x + &amp;quot; &amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(); &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
   bool[] bVals = { true, true, false, true }; &lt;br /&gt;
    MyClass&amp;lt;bool&amp;gt; mc2 = new MyClass&amp;lt;bool&amp;gt;(bVals); &lt;br /&gt;
 &lt;br /&gt;
    foreach(bool b in mc2) &lt;br /&gt;
      Console.Write(b + &amp;quot; &amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
    Console.WriteLine(); &lt;br /&gt;
  } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;4 3 6 4 7 9&lt;br /&gt;
True True False True&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Creating a list from an array==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Text;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        &lt;br /&gt;
        List&amp;lt;int&amp;gt; intList = new List&amp;lt;int&amp;gt;(new int[] { 3, 5, 15, 1003, 25 });&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Generic IEnumerator/IEnumerable==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;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;
class StringEnumerator : IEnumerator&amp;lt;string&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   string[] Strings; int Position = -1;&lt;br /&gt;
   public string Current                         &lt;br /&gt;
   {&lt;br /&gt;
      get { &lt;br /&gt;
         return Strings[Position]; &lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   object IEnumerator.Current                    &lt;br /&gt;
   {&lt;br /&gt;
      get { &lt;br /&gt;
        return Strings[Position]; &lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   public bool MoveNext()                        &lt;br /&gt;
   {&lt;br /&gt;
      if (Position &amp;lt; Strings.Length - 1)&lt;br /&gt;
      { &lt;br /&gt;
        Position++; &lt;br /&gt;
        return true; &lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
         return false;&lt;br /&gt;
   }&lt;br /&gt;
   public void Reset()                           &lt;br /&gt;
   {&lt;br /&gt;
      Position = -1;&lt;br /&gt;
   }&lt;br /&gt;
   public void Dispose() { }&lt;br /&gt;
   public StringEnumerator(string[] strings)      &lt;br /&gt;
   {&lt;br /&gt;
      Strings = new string[strings.Length];&lt;br /&gt;
      for (int i = 0; i &amp;lt; strings.Length; i++)&lt;br /&gt;
         Strings[i] = strings[i];&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class MyStrings : IEnumerable&amp;lt;string&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   string[] Strings = { &amp;quot;AAA&amp;quot;, &amp;quot;BBB&amp;quot;, &amp;quot;CCC&amp;quot; };&lt;br /&gt;
   public IEnumerator&amp;lt;string&amp;gt; GetEnumerator()    &lt;br /&gt;
   {&lt;br /&gt;
      return new StringEnumerator(Strings);&lt;br /&gt;
   }&lt;br /&gt;
   IEnumerator IEnumerable.GetEnumerator()       &lt;br /&gt;
   {&lt;br /&gt;
      return new StringEnumerator(Strings);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class Program&lt;br /&gt;
{&lt;br /&gt;
   static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      MyStrings mc = new MyStrings();&lt;br /&gt;
      foreach (string st in mc)&lt;br /&gt;
         Console.Write(&amp;quot;{0}  &amp;quot;, st);&lt;br /&gt;
      Console.WriteLine(&amp;quot;&amp;quot;);&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;AAA  BBB  CCC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==IEnumerator&amp;lt;T&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;using System;&lt;br /&gt;
using System.Collections;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
using System.Collections.ObjectModel;&lt;br /&gt;
using System.Text;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        IEnumerable&amp;lt;string&amp;gt; enumerable = new string[] { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot; };&lt;br /&gt;
        foreach (string s in enumerable)&lt;br /&gt;
            Console.WriteLine(s);&lt;br /&gt;
        IEnumerator&amp;lt;string&amp;gt; enumerator = enumerable.GetEnumerator();&lt;br /&gt;
        while (enumerator.MoveNext())&lt;br /&gt;
        {&lt;br /&gt;
            string s = enumerator.Current;&lt;br /&gt;
            Console.WriteLine(s);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A&lt;br /&gt;
B&lt;br /&gt;
C&lt;br /&gt;
A&lt;br /&gt;
B&lt;br /&gt;
C&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Template method==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;csharp&amp;quot;&amp;gt;/*Quote from: &lt;br /&gt;
Book Accelerated C# 2005&lt;br /&gt;
    * By Trey Nash&lt;br /&gt;
    * ISBN: 1-59059-717-6&lt;br /&gt;
    * 432 pp.&lt;br /&gt;
    * Published: Aug 2006&lt;br /&gt;
    * Price: $39.99&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
using System;&lt;br /&gt;
using System.Collections.Generic;&lt;br /&gt;
public class MyContainer&amp;lt;T&amp;gt; : IEnumerable&amp;lt;T&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    public void Add( T item ) {&lt;br /&gt;
        impl.Add( item );&lt;br /&gt;
    }&lt;br /&gt;
    // Converter&amp;lt;TInput, TOutput&amp;gt; is a new delegate type introduced&lt;br /&gt;
    // in the .NET Framework that can be wired up to a method that&lt;br /&gt;
    // knows how to convert the TInput type into a TOutput type.&lt;br /&gt;
    public void Add&amp;lt;R&amp;gt;( MyContainer&amp;lt;R&amp;gt; otherContainer,Converter&amp;lt;R, T&amp;gt; converter ) {&lt;br /&gt;
        foreach( R item in otherContainer ) {&lt;br /&gt;
            impl.Add( converter(item) );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public IEnumerator&amp;lt;T&amp;gt; GetEnumerator() {&lt;br /&gt;
        foreach( T item in impl ) {&lt;br /&gt;
            yield return item;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {&lt;br /&gt;
        return GetEnumerator();&lt;br /&gt;
    }&lt;br /&gt;
    private List&amp;lt;T&amp;gt; impl = new List&amp;lt;T&amp;gt;();&lt;br /&gt;
}&lt;br /&gt;
public class EntryPoint&lt;br /&gt;
{&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        MyContainer&amp;lt;long&amp;gt; lContainer = new MyContainer&amp;lt;long&amp;gt;();&lt;br /&gt;
        MyContainer&amp;lt;int&amp;gt; iContainer = new MyContainer&amp;lt;int&amp;gt;();&lt;br /&gt;
        lContainer.Add( 1 );&lt;br /&gt;
        lContainer.Add( 2 );&lt;br /&gt;
        iContainer.Add( 3 );&lt;br /&gt;
        iContainer.Add( 4 );&lt;br /&gt;
        lContainer.Add( iContainer,&lt;br /&gt;
                        EntryPoint.IntToLongConverter );&lt;br /&gt;
        foreach( long l in lContainer ) {&lt;br /&gt;
            Console.WriteLine( l );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    static long IntToLongConverter( int i ) {&lt;br /&gt;
        return i;&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;1&lt;br /&gt;
2&lt;br /&gt;
3&lt;br /&gt;
4&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>