<?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%2FData_Structure%2FIEnumerable</id>
		<title>Csharp/CSharp Tutorial/Data Structure/IEnumerable - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://nfex.ru/index.php?action=history&amp;feed=atom&amp;title=Csharp%2FCSharp_Tutorial%2FData_Structure%2FIEnumerable"/>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Data_Structure/IEnumerable&amp;action=history"/>
		<updated>2026-04-29T16:10:46Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Data_Structure/IEnumerable&amp;diff=5507&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/Data_Structure/IEnumerable&amp;diff=5507&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/Data_Structure/IEnumerable&amp;diff=5508&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://nfex.ru/index.php?title=Csharp/CSharp_Tutorial/Data_Structure/IEnumerable&amp;diff=5508&amp;oldid=prev"/>
				<updated>2010-05-26T12:15:47Z</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;==Counting Enumerable==&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.ruponentModel;&lt;br /&gt;
        class CountingEnumerable : IEnumerable&amp;lt;int&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            public IEnumerator&amp;lt;int&amp;gt; GetEnumerator()&lt;br /&gt;
            {&lt;br /&gt;
                return new CountingEnumerator();&lt;br /&gt;
            }&lt;br /&gt;
            IEnumerator IEnumerable.GetEnumerator()&lt;br /&gt;
            {&lt;br /&gt;
                return GetEnumerator();&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        class CountingEnumerator : IEnumerator&amp;lt;int&amp;gt;&lt;br /&gt;
        {&lt;br /&gt;
            int current = -1;&lt;br /&gt;
            public bool MoveNext()&lt;br /&gt;
            {&lt;br /&gt;
                current++;&lt;br /&gt;
                return current &amp;lt; 10;&lt;br /&gt;
            }&lt;br /&gt;
            public int Current&lt;br /&gt;
            {&lt;br /&gt;
                get { return current; }&lt;br /&gt;
            }&lt;br /&gt;
            object IEnumerator.Current&lt;br /&gt;
            {&lt;br /&gt;
                get { return Current; }&lt;br /&gt;
            }&lt;br /&gt;
            public void Reset()&lt;br /&gt;
            {&lt;br /&gt;
                throw new NotSupportedException();&lt;br /&gt;
            }&lt;br /&gt;
            public void Dispose()&lt;br /&gt;
            {&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    class MainClass&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            CountingEnumerable counter = new CountingEnumerable();&lt;br /&gt;
            foreach (int x in counter)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(x);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Get list of integer whose value is higher than 10==&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;
using System.Linq;&lt;br /&gt;
using System.Text;&lt;br /&gt;
using System.Linq.Expressions;&lt;br /&gt;
using System.Xml.Linq;&lt;br /&gt;
    class Program&lt;br /&gt;
    {&lt;br /&gt;
        static void Main(string[] args)&lt;br /&gt;
        {&lt;br /&gt;
            int[] integers = { 1, 6, 2, 27};&lt;br /&gt;
            &lt;br /&gt;
            IEnumerable&amp;lt;int&amp;gt; twoDigits = from numbers in integers where numbers &amp;gt;= 10 select numbers;&lt;br /&gt;
            Console.WriteLine(&amp;quot;Integers &amp;gt; 10:&amp;quot;);&lt;br /&gt;
            foreach (var number in twoDigits)&lt;br /&gt;
            {  &lt;br /&gt;
               Console.WriteLine(number);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implement IEnumerable with loop==&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;
using System.Text;&lt;br /&gt;
class MyClass : IEnumerable&amp;lt;string&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   IEnumerator&amp;lt;string&amp;gt; Letter&lt;br /&gt;
   {&lt;br /&gt;
      get&lt;br /&gt;
      {&lt;br /&gt;
         string[] s = { &amp;quot;A&amp;quot;, &amp;quot;B&amp;quot;, &amp;quot;C&amp;quot; };&lt;br /&gt;
         for (int i = 0; i &amp;lt; s.Length; i++)&lt;br /&gt;
            yield return s[i];&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   public IEnumerator&amp;lt;string&amp;gt; GetEnumerator()&lt;br /&gt;
   {&lt;br /&gt;
      return Letter;&lt;br /&gt;
   }&lt;br /&gt;
   System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()&lt;br /&gt;
   {&lt;br /&gt;
      return Letter;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
   static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      MyClass mc1 = new MyClass();&lt;br /&gt;
      foreach (string s in mc1)&lt;br /&gt;
         Console.Write(&amp;quot;{0} &amp;quot;, s);&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A B C&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Implement IEnumerable with &amp;quot;yield&amp;quot;==&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;
using System.Text;&lt;br /&gt;
class MyClass : IEnumerable&amp;lt;string&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   IEnumerator&amp;lt;string&amp;gt; Letter&lt;br /&gt;
   {&lt;br /&gt;
      get&lt;br /&gt;
      {&lt;br /&gt;
         yield return &amp;quot;A&amp;quot;;&lt;br /&gt;
         yield return &amp;quot;B&amp;quot;;&lt;br /&gt;
         yield return &amp;quot;C&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
   }&lt;br /&gt;
   public IEnumerator&amp;lt;string&amp;gt; GetEnumerator()&lt;br /&gt;
   {&lt;br /&gt;
      return Letter;&lt;br /&gt;
   }&lt;br /&gt;
   System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()&lt;br /&gt;
   {&lt;br /&gt;
      return Letter;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
class MainClass&lt;br /&gt;
{&lt;br /&gt;
   static void Main()&lt;br /&gt;
   {&lt;br /&gt;
      MyClass mc1 = new MyClass();&lt;br /&gt;
      foreach (string s in mc1)&lt;br /&gt;
         Console.Write(&amp;quot;{0} &amp;quot;, s);&lt;br /&gt;
   }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;A B C&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Iterator Block Iteration Sample==&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.ruponentModel;&lt;br /&gt;
    class IteratorBlockIterationSample : IEnumerable&lt;br /&gt;
    {&lt;br /&gt;
        object[] values;&lt;br /&gt;
        int startingPoint;&lt;br /&gt;
        public IteratorBlockIterationSample(object[] values, int startingPoint)&lt;br /&gt;
        {&lt;br /&gt;
            this.values = values;&lt;br /&gt;
            this.startingPoint = startingPoint;&lt;br /&gt;
        }&lt;br /&gt;
        public IEnumerator GetEnumerator()&lt;br /&gt;
        {&lt;br /&gt;
            for (int index = 0; index &amp;lt; values.Length; index++)&lt;br /&gt;
            {&lt;br /&gt;
                yield return values[(index + startingPoint) % values.Length];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        static void Main()&lt;br /&gt;
        {&lt;br /&gt;
            object[] values = { &amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot; };&lt;br /&gt;
            IteratorBlockIterationSample collection = new IteratorBlockIterationSample(values, 3);&lt;br /&gt;
            foreach (object x in collection)&lt;br /&gt;
            {&lt;br /&gt;
                Console.WriteLine(x);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Provide different IEnumerable implemetation for one class==&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;
public class Employee&lt;br /&gt;
{&lt;br /&gt;
    public string Name;&lt;br /&gt;
    public string Title;&lt;br /&gt;
    public Employee(string name, string title)&lt;br /&gt;
    {&lt;br /&gt;
        Name = name;&lt;br /&gt;
        Title = title;&lt;br /&gt;
    }&lt;br /&gt;
    public override string ToString()&lt;br /&gt;
    {&lt;br /&gt;
        return string.Format(&amp;quot;{0} ({1})&amp;quot;, Name, Title);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class EmployeeList &lt;br /&gt;
{&lt;br /&gt;
    private List&amp;lt;Employee&amp;gt; employeeList = new List&amp;lt;Employee&amp;gt;();&lt;br /&gt;
    public IEnumerator&amp;lt;Employee&amp;gt; GetEnumerator()&lt;br /&gt;
    {&lt;br /&gt;
        foreach (Employee tm in employeeList)&lt;br /&gt;
        {&lt;br /&gt;
            yield return tm;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public IEnumerable&amp;lt;Employee&amp;gt; Reverse&lt;br /&gt;
    {&lt;br /&gt;
        get&lt;br /&gt;
        {&lt;br /&gt;
            for (int c = employeeList.Count - 1; c &amp;gt;= 0; c--)&lt;br /&gt;
            {&lt;br /&gt;
                yield return employeeList[c];&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public IEnumerable&amp;lt;Employee&amp;gt; FirstTwo&lt;br /&gt;
    {&lt;br /&gt;
        get&lt;br /&gt;
        {&lt;br /&gt;
            int count = 0;&lt;br /&gt;
            foreach (Employee tm in employeeList)&lt;br /&gt;
            {&lt;br /&gt;
                if (count &amp;gt;= 2)&lt;br /&gt;
                {&lt;br /&gt;
                    yield break;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    count++;&lt;br /&gt;
                    yield return tm;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    public void AddEmployee(Employee member)&lt;br /&gt;
    {&lt;br /&gt;
        employeeList.Add(member);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    public static void Main()&lt;br /&gt;
    {&lt;br /&gt;
        EmployeeList employeeList = new EmployeeList();&lt;br /&gt;
        employeeList.AddEmployee(new Employee(&amp;quot;A&amp;quot;, &amp;quot;AA&amp;quot;));&lt;br /&gt;
        employeeList.AddEmployee(new Employee(&amp;quot;B&amp;quot;, &amp;quot;BB&amp;quot;));&lt;br /&gt;
        employeeList.AddEmployee(new Employee(&amp;quot;C&amp;quot;, &amp;quot;CC&amp;quot;));&lt;br /&gt;
        &lt;br /&gt;
        Console.WriteLine(&amp;quot;Enumerate using default iterator:&amp;quot;);&lt;br /&gt;
        foreach (Employee member in employeeList)&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;  &amp;quot; + member.ToString());&lt;br /&gt;
        }&lt;br /&gt;
        Console.WriteLine(&amp;quot;Enumerate using the FirstTwo iterator:&amp;quot;);&lt;br /&gt;
        foreach (Employee member in employeeList.FirstTwo)&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;  &amp;quot; + member.ToString());&lt;br /&gt;
        }&lt;br /&gt;
        Console.WriteLine(&amp;quot;Enumerate using the Reverse iterator:&amp;quot;);&lt;br /&gt;
        foreach (Employee member in employeeList.Reverse)&lt;br /&gt;
        {&lt;br /&gt;
            Console.WriteLine(&amp;quot;  &amp;quot; + member.ToString());&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;pre class=codeResult&amp;gt;Enumerate using default iterator:&lt;br /&gt;
  A (AA)&lt;br /&gt;
  B (BB)&lt;br /&gt;
  C (CC)&lt;br /&gt;
Enumerate using the FirstTwo iterator:&lt;br /&gt;
  A (AA)&lt;br /&gt;
  B (BB)&lt;br /&gt;
Enumerate using the Reverse iterator:&lt;br /&gt;
  C (CC)&lt;br /&gt;
  B (BB)&lt;br /&gt;
  A (AA)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==yield value for 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.Generic;&lt;br /&gt;
public class MainClass&lt;br /&gt;
{&lt;br /&gt;
    static public IEnumerable&amp;lt;int&amp;gt; Powers( int from,&lt;br /&gt;
                                           int to ) {&lt;br /&gt;
        for( int i = from; i &amp;lt;= to; ++i ) {&lt;br /&gt;
            yield return (int) Math.Pow( 2, i );&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    static void Main() {&lt;br /&gt;
        IEnumerable&amp;lt;int&amp;gt; powers = Powers( 0, 16 );&lt;br /&gt;
        foreach( int result in powers ) {&lt;br /&gt;
            Console.WriteLine( result );&lt;br /&gt;
        }&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;
4&lt;br /&gt;
8&lt;br /&gt;
16&lt;br /&gt;
32&lt;br /&gt;
64&lt;br /&gt;
128&lt;br /&gt;
256&lt;br /&gt;
512&lt;br /&gt;
1024&lt;br /&gt;
2048&lt;br /&gt;
4096&lt;br /&gt;
8192&lt;br /&gt;
16384&lt;br /&gt;
32768&lt;br /&gt;
65536&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>