gpt4 book ai didi

c# - 内部通用类型与外部相同 - 编译器警告

转载 作者:太空狗 更新时间:2023-10-30 00:07:47 24 4
gpt4 key购买 nike

所以我有一个树类:

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 类是私有(private)的,因此永远不能在 Tree 类之外访问,它们保证是相同的类型。这个编译器警告只是 BS,我可以安全地忽略它吗?或者有什么充分的理由为什么我应该给内部类一个不同的通用名称(除了让警告消失之外)?

(我看到了 this question ,这是关于警告本身的,但这显然是一个不同的场景。类型保证是相同的,因为 Node 的只在 Tree 的上下文中创建和访问,所以没有混淆的机会。)

最佳答案

您误解了嵌套类型参数。

编译器会警告您构造类型,例如 Tree<int>.Node<string> .这种类型会让你的生活痛苦。 (我说的是亲身经历)

如果你想使用外层TNode ,你不应该制作 Node通用。

一般来说,很少有理由将一种泛型嵌套在另一种泛型中。

关于c# - 内部通用类型与外部相同 - 编译器警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com