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

C#自定义MyDictionary类实现IEnumerable接口的方法咨询

实现说明

你自定义的IEnumerable接口仅定义了一个IEnumerator GetEnumerator()方法,所以你只需要完整实现这一个方法即可完成该接口的适配。

你当前写的GetEnumerator()存在两个明显错误:

  • 缺少方法返回值类型声明和访问修饰符,不符合C#语法要求
  • 方法内部直接调用自身,会触发无限递归导致栈溢出

具体实现方案

这里提供两种常用的实现方式,任选其一即可:

方案1:使用yield语法自定义迭代逻辑(无需引入额外依赖)

直接遍历你内部存储的DictionaryEntry数组,只返回已经存入的有效元素:

// 替换你现有错误的GetEnumerator方法
public IEnumerator GetEnumerator()
{
    for (int i = 0; i < ItemsInUse; i++)
    {
        yield return items[i];
    }
}

方案2:复用数组自带的枚举器

数组本身已经实现了枚举逻辑,只需截取有效元素部分即可,需要额外引入System.Linq命名空间:

using System.Linq;

// 替换你现有错误的GetEnumerator方法
public IEnumerator GetEnumerator()
{
    return items.Take(ItemsInUse).GetEnumerator();
}

补充修复Main方法问题

你现有代码的Main方法中没有实例化MyDictionary对象就直接调用方法,补充实例化逻辑即可正常运行:

static void Main(string[] args)
{ 
    // 初始化字典,指定初始容量为10
    MyDictionary dictionary = new MyDictionary(10);
    dictionary.Add("Mohammed", 21);
    dictionary.Remove("Mohammed");
    Console.WriteLine("字典中的元素数量 = {0}", dictionary.Count);
    Console.WriteLine("字典中是否包含'Mohammed'? {0}", 
    dictionary.Contains("Mohammed"));
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:15:05