.


:




:

































 

 

 

 


, 4




class My: IEnumerable

{

public IEnumerator GetEnumerator()

{

yield return "one";

yield return "two";

yield return "three";

yield return "!!!";

}

}

class Program

{

static void Main(string[] args)

{

foreach (string s in new My()) Console.WriteLine(s);

Console.ReadKey(); } }

//, ( 1 5)

class Program

{

public static IEnumerable Count(int from, int to)

{

from =1;

while (from <= to) yield return from++;

}

static void Main(string[] args)

{

foreach (int i in Count(1,5)) Console.WriteLine(i);

Console.ReadKey(); } }

, .

 

, Mas_Monster - , Monster ( GetType()).

class Monster {}

class Daemon: Monster {}

class Mas_Monster: IEnumerable

{

Monster[] mas;

int n;

public Mas_Monster()

{

mas = new Monster[10];

n = 0;

}

public IEnumerator GetEnumerator()

{

for (int i = 0; i < n; i++) yield return mas[i];

}

!!!

public IEnumerable Backwards()

{

for (int i = n-1; i >= 0; i--) yield return mas[i];

}

!!!

public IEnumerable MonsterOnly()

{

for (int i = 0; i < n; i++)

GetType().Name

if (mas [i].GetType().Name=="Monster")

yield return mas[i];

}

public void Add(Monster m)

{

if (n >= 10) return;

mas[n] = m;

n++;

}

}

class Program

{

static void Main(string[] args)

{

Mas_Monster m = new Mas_Monster();

m.Add(new Monster(10, 10, ""));

m.Add(new Daemon (10, 10, "", 5));

Console.WriteLine(" ");

foreach (Monster x in m)

x.Passport();

Console.WriteLine(" ");

foreach (Monster x in m.Backwards())

x.Passport();

Console.WriteLine(" ! ");

foreach (Monster x in m.MonsterOnly())

x.Passport();

Console.ReadKey(); } }

, , get, IEnumerable IEnumerator. :

Yield return ,

Yield break

yield .

, . -, MoveNext() , yield. MoveNext() - , .





:


: 2015-05-05; !; : 476 |


:

:

, .
==> ...

1513 - | 1343 -


© 2015-2024 lektsii.org - -

: 0.009 .