Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何应用复合迭代器_C#_Design Patterns - Fatal编程技术网

C# 如何应用复合迭代器

C# 如何应用复合迭代器,c#,design-patterns,C#,Design Patterns,我试图弄清楚如何合并迭代器和复合对象。 下面的结构的最佳实现是什么 class Composite<Item> : Item { } class Iterator<Item> { } class Iterable<Item> { } 类组合:项 { } 类迭代器 { } 类可编辑 { } 在C#中,很少使用这种方法进行迭代器。通常,您只需在通用集合中使用项目 至于-这种模式背后的主要动机是允许您的组合被视为只是一个项目。这通常意味着您可以仅通过执行

我试图弄清楚如何合并迭代器和复合对象。 下面的结构的最佳实现是什么

class Composite<Item> : Item
{

}

class Iterator<Item>
{

}

class Iterable<Item>
{

}
类组合:项
{
}
类迭代器
{
}
类可编辑
{
}
在C#中,很少使用这种方法进行迭代器。通常,您只需在通用集合中使用项目

至于-这种模式背后的主要动机是允许您的组合被视为只是一个项目。这通常意味着您可以仅通过执行以下操作将合成与迭代“结合起来”:

// Given:
public class Composite<Item> : IItem {}
//给定:
公共类组合:IItem{}
你可以做:

List<IItem> items = new List<IItem>();
items.Add(new Item());
items.Add(new Composite<Item>());
items.Add(new Item());

// Iterate through the items...
foreach(var item in items)
{
    item.Foo();
}
List items=newlist();
添加(新项());
添加(新组合());
添加(新项());
//遍历项目。。。
foreach(项目中的var项目)
{
item.Foo();
}