日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#中要使一个类支持FOREACH遍历,实现过程怎样? [转]

發布時間:2024/6/18 C# 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#中要使一个类支持FOREACH遍历,实现过程怎样? [转] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://blog.chinaunix.net/uid-20796829-id-466658.html

一個類型要想支持foreach則必須實現IEnumerableIEnumerator兩個接口。??
//?Namespace:?System.Collections,?Library:?BCL?
public?interface?IEnumerable...{?
????IEnumerator?GetEnumerator();?
}?
?//?Namespace:?System.Collections,?Library:?BCL?
public?interface?IEnumerator...{?
????bool?MoveNext();?
????void?Reset();?
????object?Current?...{?get;?}?
}

?

實例:

using?System;

using?System.Collections.Generic;

using?System.Windows.Forms;

using?System.Collections;

namespace?Randam

{

????public?class?car

????{

????????string?name;

????????int?year;

????????public?car(string?str,?int?num)

????????{

????????????name = str;

????????????year = num;

????????}

????????public?string?Name

????????{

????????????get

????????????{

????????????????return?name;

????????????}

????????}

????}

????public?class?cars?:?IEnumerator,IEnumerable

???{

??????private?car[] carlist;

??????int?position = -1;

??????//Create internal array in constructor.

??????public?cars()

??????{

??????????carlist=?new?car[6]

??????????{

?????????????new?car("Ford",1992),

?????????????new?car("Fiat",1988),

?????????????new?car("Buick",1932),

?????????????new?car("Ford",1932),

?????????????new?car("Dodge",1999),

?????????????new?car("Honda",1977)

??????????};

??????}

??????//IEnumerator and IEnumerable require these methods.

??????public?IEnumerator?GetEnumerator()

??????{

?????????return?(IEnumerator)this;

??????????}

??????//IEnumerator

??????public?bool?MoveNext()

??????{

?????????position++;

?????????return?(position < carlist.Length);

??????}

??????//IEnumerable

??????public?void?Reset()

??????{position = 0;}

??????//IEnumerable

??????public?object?Current

??????{

?????????get

?????????{

????????????try?

????????????{

??????????????return?carlist[position];

????????????}

????????????catch?(IndexOutOfRangeException)

????????????{

??????????????throw?new?InvalidOperationException();

????????????}

?????????}

??????}

????????public?static?void?Main()

????????{

????????????cars?cars =?new?cars();

????????????foreach?(car?s?in?cars)

????????????{

????????????????Console.WriteLine("car’s value: {0}", s.Name);

????????????}

????????????IEnumerator?ienum = (IEnumerator)cars.GetEnumerator();

????????????ienum.Reset();

????????????Console.WriteLine("***************************");

????????????while?(ienum.MoveNext())

????????????{

????????????????car?s = (car)ienum.Current;

????????????????Console.WriteLine("car’s value: {0}", s.Name);

????????????}

????????}

???}??????

}

轉載于:https://www.cnblogs.com/Uinkanade/articles/3976864.html

總結

以上是生活随笔為你收集整理的C#中要使一个类支持FOREACH遍历,实现过程怎样? [转]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。