C# 扩展方法即使在实现IEnumerable时也不显示
这是我的代码:C# 扩展方法即使在实现IEnumerable时也不显示,c#,.net,linq,C#,.net,Linq,这是我的代码: class myClass : IEnumerable { public Dictionary<int, string> dctIdName = new Dictionary<int, string>(); public myClass() { for (int idx = 0; idx < 100; idx++) {
class myClass : IEnumerable
{
public Dictionary<int, string> dctIdName = new Dictionary<int, string>();
public myClass()
{
for (int idx = 0; idx < 100; idx++)
{
dctIdName.Add(idx, string.Format("Item{0}", idx));
}
}
// IEnumerable Member
public IEnumerator GetEnumerator()
{
foreach (object o in dctIdName)
{
yield return o;
}
}
}
我包含的名称空间包括:
using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq;
如何修复此问题?您需要实现IEnumerable的通用版本。我猜在你的情况下会是:
IEnumerable<KeyValuePair<int, string>>
IEnumerable
或
IEnumerable
您需要实现IEnumerable的通用版本。我猜在你的情况下会是:
IEnumerable<KeyValuePair<int, string>>
IEnumerable
或
IEnumerable
它确实有效。是IEnumerable
上的扩展方法。但是大多数扩展方法都适用于IEnumerable
。您的课程应该从以下内容开始:
class myClass : IEnumerable<SomeType>
例如,现在您可以调用。它确实有效。是IEnumerable
上的扩展方法。但是大多数扩展方法都适用于IEnumerable
。您的课程应该从以下内容开始:
class myClass : IEnumerable<SomeType>
例如,现在您可以调用。只有以下扩展方法由.NET Framework为 AsParallel()-启用查询的并行化。(由ParallelEnumerable定义。) AsQueryable()-将IEnumerable转换为IQueryable。(由Queryable定义。) Cast()-将IEnumerable的元素强制转换为指定的类型。(由Enumerable定义。) OfType()-根据指定类型筛选IEnumerable的元素。(由Enumerable定义。)
是您正在寻找的。的.NET Framework仅定义了以下扩展方法: AsParallel()-启用查询的并行化。(由ParallelEnumerable定义。) AsQueryable()-将IEnumerable转换为IQueryable。(由Queryable定义。) Cast()-将IEnumerable的元素强制转换为指定的类型。(由Enumerable定义。) OfType()-根据指定类型筛选IEnumerable的元素。(由Enumerable定义。)
是您正在寻找的。大多数扩展方法用于泛型
IEnumerable
,而不是非泛型IEnumerable
。大多数扩展方法用于泛型IEnumerable
,而不是非泛型IEnumerable
不“包含”扩展方法,因此,它是扩展方法。接口不能有方法定义。“定义”这个词更合适吗?好吧,有些类为该接口定义扩展方法,因此这确实是一个更好的措辞,但情况正好相反。IEnumerable
不“包含”扩展方法,因此它是扩展方法。接口不能有方法定义。“defines”这个词更合适吗?好吧,有些类为接口定义扩展方法,所以这确实是一个更好的措辞,但情况正好相反。
class myClass<T> : IEnumerable<T>
class myClass : IEnumerable<KeyValuePair<int, string>>
{
public Dictionary<int, string> dctIdName = new Dictionary<int, string>();
public myClass()
{
for (int idx = 0; idx < 100; idx++)
{
dctIdName.Add(idx, string.Format("Item{0}", idx));
}
}
// IEnumerable Member
public IEnumerator<KeyValuePair<int, string>> GetEnumerator()
{
foreach (KeyValuePair<int, string> o in dctIdName)
{
yield return o;
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}