gpt4 book ai didi

c# - 尝试实现 IEnumerable 时为数组实现包装类时出现问题

转载 作者:行者123 更新时间:2023-11-30 20:11:19 25 4
gpt4 key购买 nike

我正在实现一个基本上包装数组的类:

public abstract class IndividualBase : IEnumerable<Gene>
{
private readonly Gene[] genoma;

...

public IEnumerator<Gene> GetEnumerator()
{
return genoma.GetEnumerator();
}

System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return genoma.GetEnumerator();
}
}

问题是第一个 GetEnumerator() 给我带来了麻烦——它告诉我

Cannot implicitly convert type 'System.Collections.IEnumerator' to 'System.Collections.Generic.IEnumerator'. An explicit conversion exists (are you missing a cast?)

虽然我知道问题出在哪里,但我完全不知道如何解决它。有人吗?

谢谢

最佳答案

你可以试试:

IEnumerable<Gene> typed = genoma;
return typed.GetEnumerator();

只是为了让编译器开心。虽然数组实现了通用的 Enumerable 接口(interface),但它并不存在于公共(public) GetEnumerator() 中。通过上面的内容,我们简单地转换为首选 API。这是一个微不足道的类型转换;运行时不应进行任何检查(因为编译器和 CLI 知道它是有效的)。

关于c# - 尝试实现 IEnumerable 时为数组实现包装类时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954290/

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