だから私はツリークラスを持っています:
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
ため、混乱する可能性はありません。 )