青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++ Programmer's Cookbook

{C++ 基礎} {C++ 高級} {C#界面,C++核心算法} {設計模式} {C#基礎}

Implementing IEnumerator and IEnumerable Interfaces using Inner Class in C#(very good)

.NET framework provides IEnumerable and IEnumerator interfaces to implement collection
like behavior to user defined classes. A
developer can implement these interfaces to?
provide collection like behavior to their classes. These interfaces are implemented?
through inner classes.

An inner class ( also known as Nested Type ) is a class which is enclosed inside
another class.

class A
{
int i ;
class B // Class B is a inner class or Nested Type?
{
}
}?

IEnumerator and IEnumerable interfaces are defined in System.Collections namespace as :

public interface IEnumerable
{
IEnumerator GetEnumerator(); //Returns a Enumerator
}

public interface IEnumerator
{
bool MoveNext(); //An enumerator is always positioned before the?
//first element of the collection, first call to MoveNext?
//moves the enumerator over the first element of the
//collection?

object Current { get ; } //Returns current object from the collection

void Reset(); //Resets enumerator to just above the first element of the collection.
}?

For more details about above interfaces, refer
Microsoft .NET framework documentation.

Above two interfaces must be implemented to provide a collection (similar to ArrayList ) like
behavior to user defined classes. There is one more interface called Collection interface?
which I am excluding from our discussion.

To demonstrate the working of above interfaces and inner class I have created a class called
ItemCollection which implements IEnumerable interface.

Within ItemCollection class there is one more class ( inner class or Nested Type ) called
ItemIterator which implements IEnumerator interface. ItemCollection class also contains a?
string array itemId, which provides the basis for iteration.?

For implementation details, see the code below and follow these steps :

1. Create a file ItemCollection.cs and save the source in that.

//File ItemCollection.cs
using System;
using System.Collections;?

//Class ItemCollection implements IEnumerable interface
class ItemCollection : IEnumerable
{
String[] itemId ;

//Constructor to create and populate itemId String array
public ItemCollection( int noOfItem )
{
itemId = new String[noOfItem] ;
for(int i = 0; i < itemId.Length; i ++ )
{
itemId[i] = i.ToString();
}
}

//Implementation of method GetEnumerator of IEnumerable interface
public virtual IEnumerator GetEnumerator()
{
return new ItemIterator(this);
}


//Inner class ItemIterator, implements IEnumerator
public class ItemIterator : IEnumerator
{
//Declare a variable of type ItemCollection,
//to keep reference to enclosing class instance
private ItemCollection itemCollection;

//Declare a integer pointer and Set to -1, so that
//first call to MoveNext moves the enumerator over?
//the first element of the collection.
private int index = -1 ;


//Pass an instance of enclosing class
public ItemIterator(ItemCollection ic)
{
//Save enclosing class reference?
itemCollection = ic ;
}

//After an enumerator is created or after a Reset,
//an enumerator is positioned before the first element
//of the collection, and the first call to MoveNext?
//moves the enumerator over the first element of the
//collection.

public bool MoveNext()
{
index++ ;
if( index < itemCollection.itemId.Length )
{
return true ;
}
else
{
index = -1;
return false;
}
}

//Return the current object, in our case Item Id string?
//from itemId[] array. Throws InvalidOperationException exception
//if index pointing to wrong position
public object Current
{
get
{
if( index <= -1 )?
{
throw new InvalidOperationException() ;
}
return itemCollection.itemId[index];
}
}

//Reset pointer to -1
public void Reset()
{
index = -1;
}

}

public static int Main(String[] args)
{
//Instantiate the collection
ItemCollection itemCol = new ItemCollection(10);

//Iterate the collection with various looping construct
//provided in c#
Console.WriteLine("1. Iteration using foreach loop:");
foreach( String itemIdStr in itemCol)
{
Console.Write(itemIdStr + " " );
}

Console.WriteLine("\n\n2. Iteration using for loop:");
for(IEnumerator ie = itemCol.GetEnumerator() ;
ie.MoveNext();)
{
Console.Write(ie.Current + " " );
}

Console.WriteLine("\n\n3. Iteration using while loop:");
IEnumerator ie1 = itemCol.GetEnumerator();
while(ie1.MoveNext())
{
Console.Write(ie1.Current + " ");
}
return 0;
}

}


2. Compile the above code as

csc ItemCollection.cs

3. Run the file ItemCollection.exe to see following output in console window :

1. Iteration with foreach loop:
0 1 2 3 4 5 6 7 8 9

2. Iteration with for loop:
0 1 2 3 4 5 6 7 8 9

3. Iteration with while loop:
0 1 2 3 4 5 6 7 8 9



posted on 2006-04-11 12:04 夢在天涯 閱讀(901) 評論(0)  編輯 收藏 引用 所屬分類: C#/.NET

公告

EMail:itech001#126.com

導航

統計

  • 隨筆 - 461
  • 文章 - 4
  • 評論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1811728
  • 排名 - 5

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              亚洲第一在线视频| 亚洲午夜久久久久久久久电影院 | 欧美久久视频| 久久精品亚洲乱码伦伦中文| 欧美人在线观看| 欧美成人精品不卡视频在线观看| 国产精品porn| 亚洲国产精品激情在线观看| 激情成人综合网| 亚洲一区免费| 亚洲免费一在线| 欧美日韩精品免费观看视一区二区 | 欧美人妖另类| 亚洲福利久久| 91久久精品久久国产性色也91| 欧美一级播放| 久久精品夜色噜噜亚洲a∨| 欧美亚州在线观看| 99精品热6080yy久久| 一区二区三区国产盗摄| 欧美激情第3页| 亚洲人成精品久久久久| 亚洲精品午夜精品| 欧美精品v日韩精品v国产精品 | 1000部精品久久久久久久久| 久久久久久久久久久久久9999| 久久精品国产在热久久| 国产亚洲一二三区| 久久精品国产亚洲一区二区三区| 久久se精品一区精品二区| 国产免费成人在线视频| 午夜国产一区| 久久久久久久网| 1024国产精品| 欧美韩日亚洲| 99一区二区| 欧美一区影院| 影音先锋日韩有码| 欧美成人免费在线观看| 亚洲欧洲日夜超级视频| 亚洲一区精品视频| 国产色爱av资源综合区| 久久久久久亚洲精品不卡4k岛国| 欧美国产日韩精品| 在线视频你懂得一区| 国产精品少妇自拍| 久久久久久久一区二区| 亚洲国产经典视频| 亚洲欧美美女| 一区二区三区在线视频免费观看| 欧美超级免费视 在线| 99天天综合性| 久久亚洲精品伦理| 一区二区三区精品视频在线观看| 国产精品三区www17con| 麻豆国产精品777777在线| 亚洲精品一线二线三线无人区| 午夜精品一区二区在线观看 | 国产一区二区三区日韩| 欧美国产一区二区在线观看| 亚洲性感激情| 亚洲国产精品成人一区二区| 午夜一区在线| 亚洲精品四区| 国内成人精品2018免费看| 欧美精品久久久久久久久久| 午夜精品网站| 日韩午夜电影| 欧美1区3d| 欧美尤物一区| 亚洲一区久久| 亚洲精品久久久一区二区三区| 国产精品一二一区| 欧美日本国产一区| 老司机午夜精品视频在线观看| 亚洲手机成人高清视频| 欧美成人午夜激情视频| 欧美中文日韩| 亚洲综合国产| 一本一本久久| 亚洲片在线观看| 激情自拍一区| 国产亚洲一区在线播放| 国产精品第一区| 欧美日本一道本| 美玉足脚交一区二区三区图片| 先锋影音网一区二区| 一区二区三区欧美亚洲| 亚洲黄色天堂| 欧美韩日一区二区三区| 久久视频在线看| 久久激情视频免费观看| 午夜一区在线| 欧美亚洲免费电影| 亚洲欧美日韩在线高清直播| 一区二区三区精品久久久| 亚洲精品国久久99热| 亚洲大片免费看| 在线成人欧美| 一色屋精品视频免费看| 一区在线播放| 在线观看一区二区视频| 尤物九九久久国产精品的特点| 国产一区二区按摩在线观看| 国产人成精品一区二区三| 国产精品每日更新在线播放网址| 欧美日韩激情网| 欧美巨乳波霸| 欧美四级剧情无删版影片| 欧美日韩播放| 欧美视频在线观看 亚洲欧| 欧美视频免费在线| 国产精品久99| 国产亚洲永久域名| 在线不卡a资源高清| 亚洲国产成人久久综合一区| 亚洲欧洲日本国产| 夜夜嗨av色综合久久久综合网| 国产精品99久久久久久宅男| 亚洲一区美女视频在线观看免费| 亚洲欧美日韩人成在线播放| 欧美一区二区三区婷婷月色| 久久精品一区二区三区四区 | 黄色亚洲大片免费在线观看| 尤物99国产成人精品视频| 亚洲精品久久久久久久久久久| 亚洲社区在线观看| 欧美一区二区三区的| 老司机久久99久久精品播放免费| 欧美黄色视屏| 一本久久a久久精品亚洲| 亚洲欧美综合| 欧美mv日韩mv国产网站| 欧美性大战久久久久久久蜜臀| 国产视频一区在线观看| 亚洲欧洲日本一区二区三区| 亚洲深夜av| 久久夜色精品亚洲噜噜国产mv | 99v久久综合狠狠综合久久| 亚洲欧美日韩爽爽影院| 毛片精品免费在线观看| 欧美网站大全在线观看| 一区二区三区在线免费视频| 亚洲最新合集| 麻豆国产精品va在线观看不卡 | 男女av一区三区二区色多| 欧美视频二区| 亚洲电影激情视频网站| 亚洲一区二区三区国产| 浪潮色综合久久天堂| 日韩午夜视频在线观看| 欧美在线视频在线播放完整版免费观看 | 久久夜色精品国产| 一区二区欧美日韩视频| 久久嫩草精品久久久精品| 国产精品国产三级国产aⅴ浪潮| 在线看无码的免费网站| 午夜精品福利视频| 亚洲人成7777| 久久综合导航| 国产亚洲一区在线| 亚洲在线播放| 亚洲国产1区| 久久国产精品毛片| 国产精品资源| 亚洲亚洲精品三区日韩精品在线视频 | 欧美天堂在线观看| 亚洲国产精品国自产拍av秋霞| 欧美一区二区视频在线观看2020| 亚洲国产福利在线| 久久全球大尺度高清视频| 国产欧美一区二区三区在线看蜜臀| 日韩一区二区精品葵司在线| 美女脱光内衣内裤视频久久网站| 午夜精品国产更新| 国产精品国产| 正在播放亚洲一区| 亚洲精品免费电影| 免费在线日韩av| 亚洲国产精品一区二区三区| 久久久久久久综合狠狠综合| 亚洲一区视频在线| 国产精品久久久久国产a级| 99精品视频免费全部在线| 亚洲盗摄视频| 欧美成人午夜视频| 91久久国产综合久久91精品网站| 久久久999精品免费| 亚洲欧美日韩成人| 国产欧美一区二区三区久久| 欧美亚洲综合另类| 亚洲影院在线观看| 国产精品你懂的在线欣赏| 亚洲综合久久久久| 亚洲在线观看视频网站| 国产精品日韩欧美一区| 久久成人免费| 久久精品中文字幕一区| 激情综合自拍| 欧美激情一区在线|