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

C++ Programmer's Cookbook

{C++ 基礎(chǔ)} {C++ 高級(jí)} {C#界面,C++核心算法} {設(shè)計(jì)模式} {C#基礎(chǔ)}

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 夢(mèng)在天涯 閱讀(907) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C#/.NET

公告

EMail:itech001#126.com

導(dǎo)航

統(tǒng)計(jì)

  • 隨筆 - 461
  • 文章 - 4
  • 評(píng)論 - 746
  • 引用 - 0

常用鏈接

隨筆分類

隨筆檔案

收藏夾

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

積分與排名

  • 積分 - 1816727
  • 排名 - 5

最新評(píng)論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              亚洲国产成人精品久久久国产成人一区| 久久免费99精品久久久久久| 国产嫩草一区二区三区在线观看| 国模私拍一区二区三区| 午夜欧美精品| 亚洲欧美国产高清va在线播| 国产精品成人午夜| 亚洲无线视频| 亚洲男人第一网站| 一区二区欧美日韩视频| 亚洲一二三区视频在线观看| 国产欧美二区| 99这里只有精品| 国产精品一区免费观看| 一区二区免费看| 国模私拍一区二区三区| 亚洲在线第一页| 亚洲第一视频网站| 亚洲精品视频在线播放| 国产精品xvideos88| 久久久久久亚洲精品不卡4k岛国| 国产精品露脸自拍| 噜噜噜91成人网| 欧美激情中文字幕乱码免费| 亚洲一区999| 欧美无砖砖区免费| 宅男精品导航| 亚洲国产精品传媒在线观看| 99在线精品观看| 亚洲一区精彩视频| 久久综合亚州| 亚洲欧美日韩在线高清直播| 久久亚洲欧美国产精品乐播| 亚洲视频一二区| 久久全球大尺度高清视频| 毛片一区二区| 亚洲精品少妇30p| 性亚洲最疯狂xxxx高清| 亚洲美女毛片| 久久久久久尹人网香蕉| 午夜伦欧美伦电影理论片| 国产精品一区二区久久 | 午夜精品视频网站| 国产精品日日摸夜夜摸av| 欧美成人精品三级在线观看| 国产精品久久久久久av福利软件| 亚洲亚洲精品三区日韩精品在线视频 | 欧美成人有码| 国产伦精品一区二区三| 久久精品国产久精国产思思| 中文高清一区| 国产亚洲视频在线观看| 国产精品99久久久久久久女警| 性欧美暴力猛交另类hd| 欧美精品在欧美一区二区少妇| 久久福利视频导航| 欧美午夜在线一二页| 欧美一区久久| 久久久久九九九九| 国产精品日韩二区| 久久色在线播放| 亚洲日产国产精品| 影音先锋日韩有码| 欧美一级精品大片| 亚洲国产欧美在线| 亚洲免费av观看| 国产视频观看一区| 欧美一级黄色录像| 亚洲精品一区二区在线观看| 久久国产精品色婷婷| 国产伦精品一区二区三| 欧美96在线丨欧| 欧美成人官网二区| 午夜精品久久久久久久99热浪潮 | 亚洲激情自拍| 日韩视频一区二区三区在线播放 | 国产精品久久久一区麻豆最新章节| 久久高清一区| 亚洲综合第一| 一本久道久久综合中文字幕 | 亚洲午夜羞羞片| 亚洲国产影院| 猫咪成人在线观看| 久久久久久久一区二区| 亚洲一区二区影院| 亚洲伦理中文字幕| 亚洲国产毛片完整版| 欧美成人午夜激情视频| 亚洲九九精品| 欧美高清视频| 美日韩精品视频| 99精品国产福利在线观看免费| 欧美日韩精品免费观看视频| 亚洲乱码国产乱码精品精可以看| 欧美+日本+国产+在线a∨观看| 欧美在线免费观看| 亚洲欧美影院| 亚洲欧美日本国产有色| 亚洲午夜在线视频| 夜夜嗨av一区二区三区网站四季av| 国产精品另类一区| 欧美日韩在线播放三区| 亚洲欧美国产高清va在线播| 一区二区欧美日韩视频| 日韩一级视频免费观看在线| 久久精品亚洲| 久久精品视频在线播放| 久久av在线| 久久久青草婷婷精品综合日韩| 久久久久久精| 乱码第一页成人| 欧美国产一区二区在线观看| 午夜国产不卡在线观看视频| 亚洲一区影音先锋| 午夜精品在线| 欧美在线视频免费| 久久精品国产精品亚洲| 久久久久久久久久久久久久一区| 久久久免费精品| 免费成人毛片| 最新高清无码专区| 9i看片成人免费高清| 亚洲一区二区三| 欧美一级网站| 免费高清在线视频一区·| 亚洲午夜一区| 久久精品国产精品| 欧美xxxx在线观看| 欧美视频网址| 欧美片网站免费| 国产精品久久久久久模特| 国产午夜精品久久久| 1000部精品久久久久久久久| 夜久久久久久| 欧美在线视频一区二区| 免费日韩成人| 亚洲美女视频| 欧美专区日韩专区| 午夜精品福利视频| 亚洲午夜av在线| 久久国产主播精品| 欧美精品色网| 国语精品一区| 国产亚洲欧美日韩在线一区| 亚洲人在线视频| 亚洲国产欧美日韩| 午夜精品福利在线观看| 男人天堂欧美日韩| 亚洲图片在区色| 农夫在线精品视频免费观看| 国产精品永久免费视频| 最新成人av网站| 久久国产精品一区二区三区| 亚洲激情啪啪| 久久久久久一区二区| 国产精品国产三级国产| 在线看国产日韩| 欧美一区二区三区免费大片| 久久精品成人欧美大片古装| 亚洲国产小视频| 久久精品中文| 欧美mv日韩mv国产网站| 国产色视频一区| 亚洲天堂av在线免费观看| 欧美成人午夜剧场免费观看| 亚洲一区视频在线| 欧美精品一区在线| 亚洲国产成人午夜在线一区 | 亚洲国产欧美精品| 久久国产夜色精品鲁鲁99| 国产精品久久久久999| 亚洲美女在线一区| 欧美大片免费观看| 久久精品综合一区| 国产亚洲精品aa| 西西人体一区二区| 一区二区三区日韩欧美| 欧美精品一二三| 91久久国产综合久久蜜月精品| 麻豆精品视频在线观看| 欧美一区二区三区另类| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久 | 国产精品亚洲美女av网站| 中文亚洲免费| 日韩视频免费| 欧美三级视频在线播放| 中文精品视频一区二区在线观看| 亚洲韩日在线| 欧美日韩1区2区| 在线天堂一区av电影| 亚洲美女精品成人在线视频| 欧美国产日韩在线观看| 国产欧美日本在线| 欧美一级电影久久| 亚洲女与黑人做爰| 国产欧美一区二区精品婷婷| 久久久久国产精品一区| 久久精品在线观看| 亚洲承认在线| 亚洲日本成人网|