.


:




:

































 

 

 

 


IEnumerable




 

MyzikText.

.NET , , , . , , . , foreach , IEnumerable (). GetEnumerator(), Enumerator (). GetEnumerator() :

IEnumerator GetEnumerator();

, IEnumerable IEnumerator.

IEnumerator Object Current{get;}, , bool MoveNext(), , void Reset(), .

foreach. ( ), .

, , , IComparable. CompareTo(object obj), , , , "", "" "".

IEnumerable IEnumerator , . , Tovar .

class Tovar

{

public string Naz; //

public int Cena;

public Tovar(string n, int c) //

{

Naz = n;

Cena = c;

}

}

Tovar Cklad, :

class Cklad

{

public Tovar[] tovar; //

public Cklad() //

{

tovar = new Tovar[4];

}

}

, , 4.

IEnumerable.

:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsFormsApplication1

{

public partial class Form1: Form

{

public static string s;

public static int kol;

class Tovar

{

public string Naz; //

public int Cena;

public Tovar(string n, int c) //

{

Naz = n;

Cena = c;

}

}

class Cklad

{

public Tovar[] tovar; //

public Cklad() //

{

tovar = new Tovar[4];

}

}

public Form1()

{

InitializeComponent();

kol = 0;

s = "";

}

Cklad ckl = new Cklad();

 

private void button2_Click(object sender, EventArgs e)

{

if (kol < 4)

{

ckl.tovar[kol] = new Tovar(textBox1.Text, Convert.ToInt32(textBox2.Text));

s = s + textBox1.Text + textBox2.Text + "\r\n";

}

else { s = s + "CKLAD POLHIJ" + "\r\n"; kol--; }

kol++;

textBox3.Text = s;

}

private void button1_Click(object sender, EventArgs e)

{

s = "";

s = " foreach"+ "\r\n";

foreach (Tovar t in ckl.tovar)

{

s = s + t.Naz + " " + t.Cena.ToString() + "\r\n";

}

s = s + " for" + "\r\n";

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

{

s = s + ckl.tovar[i].Naz + " " + ckl.tovar[i].Cena.ToString() + "\r\n";

}

textBox3.Text = s;

}

}

}

 

11.2

 

, foreach ckl.tovar, , , , GetEnumerator.

, foreach Tovar ckl Cklad, tovar Cklad, ,

foreach (Tovar t in ckl)

{

s = s + t.Naz + " " + t.Cena.ToString() + "\r\n";

}

:

 

foreach statement cannot operate on variables of type ' WindowsFormsApplication1.Form1.Cklad ' because 'Books' does not contain a public definition for 'GetEnumerator'

( foreach ' WindowsFormsApplication1.Form1.Cklad ', ' GetEnumerator').

, :

using System.Collections;

Cklad IEnumerable:

class Cklad: IEnumerable

Cklad GetEnumerator:

public IEnumerator GetEnumerator()

{

for (int i = 0; i < 4; i++) yield return tovar[i];

}

, .. (. 207.)

, , foreach, : GetEnumerator, Current, MoveNext Reset. , , , , MoveNext 1 , Current ..

, , 2.0 , .

, . foreach , . yield.

...

, 2.0 , IEnumerable, . MoveNext Current IEnumerator. , , .

foreach , . , , , , , , ..

foreach, .

foreach, . , , , , foreach.

for , kol.

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

{

s = s + ckl.tovar[i].Naz + " " + ckl.tovar[i].Cena.ToString() + "\r\n";

}

 





:


: 2015-05-05; !; : 527 |


:

:

,
==> ...

1515 - | 1389 -


© 2015-2024 lektsii.org - -

: 0.017 .