![]() |
1
3
改为使用:
或者你可以用遏制来代替。 |
![]() |
2
1
这是一个没有中断条件的递归调用,您将得到一个堆栈溢出,因为它将很快填满堆栈。 您要强制转换到一个接口,它不会像您认为的那样工作。最后,您只需要调用这个.getEnumerator();这是您已经使用的函数,因此是递归的。也许您的意思是base.getEnumerator(); |
![]() |
3
1
通常,您可能希望将Things集合的实现与Thing对象的实现分离。Things类能够处理IThing的任何实现,而不仅仅是Thing类。 明确地:
在这种情况下,您不必重写getEnumerator()的默认实现,基本实现已经为您正确地键入了。这将避免您当前遇到的溢出,并满足您提供的测试用例。 |
![]() |
4
1
这是一个很好的例子,说明语言和运行时需要理解协方差和逆方差。 在C 4中,您只需使用
|
![]() |
5
0
似乎很明显
|
![]() |
6
0
我不知道一个问题是否可以作为一个答案,但请允许我作为一个顾问;p为什么要实现getEnumerator()? 如果你把它改成list,你就可以免费得到getEnumerator。 也要注意,从列表中派生通常是一个坏主意。您应该考虑从IEnumerable<()IThings>派生(因为List也实现了该接口,所以您已经在做什么是atm多余的),或者如果您需要List接口,而不仅仅是IEnumerable实现IList并保留私有的List对象。这样,您就可以完全控制实现,并且只公开设计契约(通过实现的接口)。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 3 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 3 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |