You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现泛型IEnumerable<Mailbox>接口遇CS0738错误,求问题原因

问题原因及解决方案

错误的核心原因是:IEnumerable<Mailbox> 继承自非泛型的 IEnumerable 接口,因此你的类必须同时实现两个GetEnumerator方法:

  • 泛型版本:IEnumerator<Mailbox> GetEnumerator()(你已经实现了这个)
  • 非泛型版本:IEnumerator IEnumerable.GetEnumerator()(你遗漏了这个)

另外你的AddMailbox方法存在语法错误:void返回类型的方法不能使用return语句返回值(List.Add本身就是无返回值的方法)。

修正后的完整代码

using System.Collections; // 需要引入这个命名空间来使用非泛型的IEnumerator

internal class Mailboxes : IEnumerable<Mailbox>
{
    private List<Mailbox> MailboxesList = new List<Mailbox>();

    public void AddMailbox(Mailbox mailbox)
    {
        MailboxesList.Add(mailbox); // 去掉多余的return
    }

    // 泛型版本的GetEnumerator(公开实现)
    public IEnumerator<Mailbox> GetEnumerator()
    {
        return MailboxesList.GetEnumerator();
    }

    // 非泛型版本的GetEnumerator(显式接口实现)
    IEnumerator IEnumerable.GetEnumerator()
    {
        // 直接调用泛型版本,避免重复逻辑
        return GetEnumerator();
    }
}

关键说明

  1. 显式实现非泛型接口方法:通过IEnumerable.GetEnumerator()的写法,明确这是实现非泛型接口的成员,避免和泛型版本冲突。
  2. 命名空间引入:必须添加using System.Collections;,否则无法识别非泛型的IEnumerator类型。
  3. 修正AddMailbox方法:移除return语句,因为List.Add没有返回值,void方法不需要返回任何内容。

内容的提问来源于stack exchange,提问作者user3844416

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:14:55