Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.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# 为集合类实现IEnumerable?_C#_Foreach_Enumerable_Enumerator - Fatal编程技术网

C# 为集合类实现IEnumerable?

C# 为集合类实现IEnumerable?,c#,foreach,enumerable,enumerator,C#,Foreach,Enumerable,Enumerator,我想理解这个主题,而不仅仅是能够理解语法。我有一个名为IGroupNode的集合类,它最多可以容纳8个子节点 internal class GroupNode : IGroupNode { public string Name { get; private set; } const int NumberOfChildren = 8; #region Member variables private IList<

我想理解这个主题,而不仅仅是能够理解语法。我有一个名为IGroupNode的集合类,它最多可以容纳8个子节点

internal class GroupNode : IGroupNode
{
    public string Name
    {
        get;
        private set;
    }

    const int NumberOfChildren = 8;
    #region Member variables
    private IList<ISceneNode> children = new List<ISceneNode>(NumberOfChildren);
    #endregion

    public IEnumerable<ISceneNode> GetEnumerator()
    {
        //?
    }

在本例中,您只需返回
子类。GetEnumerator()
。(顺便说一下,GroupNode对象应该实现IEnumerable,GetEnumerator方法应该具有正确的返回类型。)

public IEnumerator GetEnumerator()
{
返回子项。GetEnumerator()
}

但在更一般的情况下,您可以对某些内容进行迭代,并为每个元素调用
产生返回值。

在这种情况下,您只需返回
子元素。GetEnumerator()
。(顺便说一下,GroupNode对象应该实现IEnumerable,GetEnumerator方法应该具有正确的返回类型。)

public IEnumerator GetEnumerator()
{
返回子项。GetEnumerator()
}

在更一般的情况下,尽管您可以对某些内容进行迭代,并为每个元素调用
产生返回值

因为IList已经实现了
IEnumerable
,您可以在
getEnumerable()
方法中返回
children.GetEnumerator()

因为IList已经实现了
IEnumerable
,您只需在
GetEnumerator()
方法中返回
children.GetEnumerator()

无法将IEnumerable隐式定义为IEnumeratord您是否将GetEnumerator的返回类型修复为IEnumerator?否,但这是如何工作的。所以,类实现了IEnumerable,但在实际实现中,我实现了IEnumerator?你是对的,我只是希望IEnumerable现在能完全实现。我将尝试继续,看看我是否遇到任何问题(感谢上帝的智能感知)“在实际实现中我实现了IEnumerator”这是不准确的。阅读接口IEnumerable的文档。注意方法上的返回类型。当然,接口A可以有一个返回类型为B的对象的方法。不能隐式地将IEnumerable定义为IEnumeratorId。您是否将GetEnumerator的返回类型修复为IEnumerator?不,但这是如何工作的。所以,类实现了IEnumerable,但在实际实现中,我实现了IEnumerator?你是对的,我只是希望IEnumerable现在能完全实现。我将尝试继续,看看我是否遇到任何问题(感谢上帝的智能感知)“在实际实现中我实现了IEnumerator”这是不准确的。阅读接口IEnumerable的文档。注意方法上的返回类型。当然,接口A可以有一个返回类型B的对象的方法。
'Weber.SceneGraphCore.GroupNode' does not implement interface member 'System.Collections.IEnumerable.GetEnumerator()'. 'Weber.SceneGraphCore.GroupNode.GetEnumerator()' cannot implement 'System.Collections.IEnumerable.GetEnumerator()' because it does not have the matching return type of 'System.Collections.IEnumerator'.
public IEnumerator<ISceneNode> GetEnumerator()
{
    return children.GetEnumerator()
}