1

私はこのトピックを理解したいと思っており、構文を投げ捨てるだけではありません。IGroupNode というコレクション クラスがあり、最大 8 つの子 ISceneNode を受け取ることができます。

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()
    {
        //?
    }

お分かりのように、これはリストに基づく非常に単純なコレクション クラスです。ここで IEnumerable の実装を単純に内部コンテナーの列挙子を返すようにするにはどうすればよいですか? この非常に簡単なケースでこれを行う方法がわかりません。

今、私はこの問題で困っています:

'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'.
4

2 に答える 2

3

この場合、単に戻ることができますchildren.GetEnumerator()。(ところで、GroupNode オブジェクトは IEnumerable を実装する必要があり、GetEnumerator メソッドは正しい戻り値の型を持つ必要があります。)

public IEnumerator<ISceneNode> GetEnumerator()
{
    return children.GetEnumerator()
}

より一般的なケースでは、何かを反復処理してyield return各要素を呼び出すことができます。

于 2013-11-01T02:09:11.330 に答える