有人可以分享一個簡單的例子,使用foreach
關鍵字與自定義對象?如何使用foreach關鍵字自定義對象在C#
14
A
回答
37
鑑於標籤,我假設你的意思是在.NET中 - 我將選擇談論C#,因爲這就是我所知道的。
foreach
聲明(通常)使用IEnumerable
和IEnumerator
或它們的通用表親。形式的語句:
foreach (Foo element in source)
{
// Body
}
其中source
實現IEnumerable<Foo>
是大致等效於:
using (IEnumerator<Foo> iterator = source.GetEnumerator())
{
Foo element;
while (iterator.MoveNext())
{
element = iterator.Current;
// Body
}
}
注意,IEnumerator<Foo>
設置在端,但是該語句退出。這對迭代器塊很重要。
要自己實現IEnumerable<T>
或IEnumerator<T>
,最簡單的方法是使用迭代器塊。不要在這裏寫下所有的細節,最好的方法是直接引用chapter 6 of C# in Depth,這是免費下載。整個第6章是關於迭代器的。我有另一對夫婦的文章對我的C#在深入現場,太:
作爲一個簡單的例子,但:
public IEnumerable<int> EvenNumbers0To10()
{
for (int i=0; i <= 10; i += 2)
{
yield return i;
}
}
// Later
foreach (int x in EvenNumbers0To10())
{
Console.WriteLine(x); // 0, 2, 4, 6, 8, 10
}
要實現IEnumerable<T>
爲類型,你可以這樣做:
public class Foo implements IEnumerable<string>
{
public IEnumerator<string> GetEnumerator()
{
yield return "x";
yield return "y";
}
// Explicit interface implementation for nongeneric interface
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator(); // Just return the generic version
}
}
6
(我假設這裏C#)
如果有自定義對象的列表,你可以只使用foreach以同樣的方式爲你做任何其他對象:
List<MyObject> myObjects = // something
foreach(MyObject myObject in myObjects)
{
// Do something nifty here
}
如果你想要創建自己的容器,您可以使用yield關鍵字(來自.Net 2.0及更高版本)和IEnumerable接口一起使用。
class MyContainer : IEnumerable<int>
{
private int max = 0;
public MyContainer(int max)
{
this.max = max;
}
public IEnumerator<int> GetEnumerator()
{
for(int i = 0; i < max; ++i)
yield return i;
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
然後用foreach使用它:
MyContainer myContainer = new MyContainer(10);
foreach(int i in myContainer)
Console.WriteLine(i);
相關問題
- 1. 如何使用自定義對象創建自定義對象?
- 2. 如何在C++中使用自定義的Objective-C對象?
- 3. 如何使用自定義關鍵字在php
- 4. 自定義JavaScript對象鍵
- 5. imap自定義關鍵字
- 6. 轉換自定義類對象IEnuerable其在foreach語句使用
- 7. 如何在自定義HtmlHelper中使用C#對象?
- 8. Objective-C:使用自定義對象鍵從NSMutableDictionary獲取值
- 9. iOS如何使用自定義對象鍵創建NSPredicate?
- 10. 如何使用stdext :: hash_map鍵是一個自定義對象?
- 11. 在用戶定義的類中使用C#使用關鍵字
- 12. 如何創建自定義關鍵字C#
- 13. C#4動態關鍵字 - 如何設置自定義屬性
- 14. 使用自定義對象作爲字典的鍵
- 15. 使用自定義鍵將對象轉換爲對象數組
- 16. C#字典 - 自定義對象
- 17. 如何使用相關對象的自定義管理器?
- 18. 使用自定義對象
- 19. 使用自定義對象
- 20. 如何使用C將POST自定義對象POST到web api#
- 21. 如何在自定義搜索框中使用關鍵事件?
- 22. 如何使用自定義對象使用凌空在Android android
- 23. 如何使用QBRTCSession對象發送自定義字符串
- 24. 自定義字典對象?
- 25. 如何使用foreach獲取關鍵值?
- 26. 使用自定義關鍵字設置鏈接在javascript
- 27. 在自定義方法中使用jQuery'this'關鍵字
- 28. 使用自定義適配器在ListView中搜索關鍵字
- 29. 如何在json對象中使用可變定義的鍵?
- 30. 如何知道哪些對象可以在C#中使用關鍵字USING?
具體是什麼問題?如何*使用foreach與自定義對象?或者如何在自定義對象中編寫代碼,以便可以使用foreach? – 2008-12-08 09:13:49
如何在自定義對象中編寫代碼,以便可以使用foreach – user42070 2008-12-08 09:15:52