6

だから私はツリークラスを持っています:

public class Tree<T> : IEnumerable where T : IComparable<T>
{
    private Node<T> root = null;

    ...

    private class Node<T> : IEnumerable<T> where T : IComparable<T>
    {
        private Node<T> left, right;
        ...
    }
}

正常に動作しますが、コンパイラの警告が表示されます。Type parameter 'T' has the same name as the type parameter from outer type 'Tree<T>' もちろん、同じ名前です。同じ型である必要があります。(実際、Nodeクラスはプライベートであり、クラス外からアクセスすることはできないため、同じ型であるTreeことが保証されています。このコンパイラは、安全に無視できるBSだけを警告していますか?または、そうすべき正当な理由がありますか?内部クラスに別の一般的な名前を付けますか (警告をなくすため以外に)?

(警告自体に関するこの質問を見ましたが、これは明らかに別のシナリオです。 はNodeのコンテキスト内でのみ作成およびアクセスされるため、タイプは同じであることが保証されているTreeため、混乱する可能性はありません。 )

4

2 に答える 2