看看这段代码:
public class myWords : IEnumerable<string>
{
string[] f = "I love you".Split(new string[]{"lo"},StringSplitOptions.RemoveEmptyEntries);
public IEnumerator<string> GetEnumerator()
{
return f.Select(s => s + "2").GetEnumerator();
我可以这样做:
public class EnumerableTest : System.Collections.IEnumerable
{
System.Collections.IEnumerable data;
public EnumerableTest(System.Collections.IEnumerable d)
{
data = d;
}
public System.Collections.IEnumerator GetEnumerator()
{
foreach (object s in dat
foreach究竟是如何在C#中实现的?
我想象它的一部分看起来像:
var enumerator = TInput.GetEnumerator();
while(enumerator.MoveNext())
{
// do some stuff here
}
然而,我不确定到底发生了什么。使用什么方法为每个周期返回enumerator.Current?它是为每个循环返回的,还是需要一个匿名函数或其他东西来执行foreach的主体
我使用以下代码使myClass能够使用foreach。但我对编程比较陌生,在理解下面的代码方面有一些困难。我在评论中描述了我的问题。如果能提供一些信息,我将不胜感激。
public class MyClass : IEnumerable<string>
{
//1) What is IEnumerator for?
// Whats the difference between IEnumerator and IEnumerable
public IEnumerator<string> GetEnumerator()
我正在尝试编写我自己的列表(简单)实现。这就是我迄今为止所做的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace provaIEnum
{
class MyList<T> : IEnumerable<T>
{
private T[] _array;
public int Count { get; private set; }
public MyList() {
我在C#中遇到了一个问题,给了我一个错误“无法从用法中推断出方法的类型参数”。如果我从非泛型列表派生泛型列表,编译器似乎无法确定正确的接口:
代码:
public class SpecialItem : BaseItem
{
public string Title { get; set; }
}
public class BaseItem
{
public string Name { get; set; }
}
public class GenericList<T> : NongenericBaseList, IEnumerable<T>
更新了我的.NET Core3.1Console应用程序以使用Nullables特性,并有下面的foreach循环。
DataTable profiles = DB.ListProfiles();
// CS8600 warning here
// v
foreach (DataRow r in profiles.Rows)
{
// processing code here
}
static public DataTable ListProfiles()
{
DataTable t = new DataTable();
using (S
我有一个存储字符串列表的类,我想让这个类在foreach语句中可用,所以我找到了这两个接口,并尝试实现它们。
public class GroupCollection : IEnumerable, IEnumerator
{
public List<string> Groups { get; set; }
public int Count { get { return Groups.Count; } }
int position = -1;
}
public IEnumerator GetEnumerator()
{
return (IEnumer
我正在编写的代码从非托管代码接收ArrayList,并且该ArrayList将始终包含一个或多个Grid_Heading_Blk类型的对象。我曾考虑将此ArrayList更改为泛型列表,但我不确定转换操作是否会如此昂贵,从而使使用泛型列表的好处化为乌有。目前,我只是在将ArrayList传递给将要使用它的类之后,运行一个foreach (Grid_Heading_Blk in myArrayList)操作来处理ArrayList内容。
我是否应该将ArrayList转换为泛型类型列表?如果是这样的话,最有效的方法是什么?
我试图创建一个简单的链接列表,允许我迭代每个元素。
但是,当我试图迭代GetReservation()方法上的列表时,foreach就会笨拙地停止,我不明白为什么。
我假设'this‘指令返回类的可枚举部分。
但我不确定。
我需要一些帮助才能弄清楚。
public class Reservation
{
public string reference;
public string client;
public string state;
public Reservation(string reference,
我正在尝试为Dictionary<String,Foo>创建一个包装器。
Dictionary<String,Foo>实现IEnumerable<KeyValuePair<String,Foo>>,但我希望我的包装类实现IEnumerable<Foo>。所以我试了一下:
public class FooCollection : IEnumerable<Foo>
{
private Dictionary<string, Foo> fooDictionary = new Dictionary<stri
下面的代码片段显示了来自std::vector C++库的iterator。与此等效的C#是什么?考虑到它不是一个链表,我可以简单地遍历向量中的每一项吗?迭代器在这里到底做了什么,我如何在C#中做同样的事情?完整的代码是。
std::vector<KMeanCluster>::iterator closest_cluster = clusters.begin();
// Figure out which cluster this color is closest to in RGB space.
for (std::vector<KMeanCluster&
我正在学习如何实现接口和泛型,我写了这段代码,但VStudio说我没有实现System.Collections.Enumerable.GetEnumerator().我不是在下面这样做的吗?它想要两个实现?
namespace Generic_cars
{
class VehicleLot:IEnumerable<Vehicle>
{
public List<Vehicle> Lot = new List<Vehicle>();
IEnumerator<Vehicle> IEnumerable<Vehicle>.
目前我已经像下面这样实现了它,但是我不喜欢它,因为GetEnumerator中的代码复制,我如何删除复制.
public class EodSettlementRequestStubData : IEnumerable<SettlementRequest>
{
public SettlementRequest UnapprovedFlows;
public SettlementRequest UnapprovedRecovery;
public SettlementRequest UnverifiedFlows;
public Settlement
我知道如何实现非泛型IEnumerable,如下所示:
using System;
using System.Collections;
namespace ConsoleApplication33
{
class Program
{
static void Main(string[] args)
{
MyObjects myObjects = new MyObjects();
myObjects[0] = new MyObject() { Foo = "Hello", Bar =
我假设下面的示例提供了实现IEnumerable接口时应该遵循的最佳实践。
以下是一个问题:
为什么要提供 Current 方法的两个版本?在使用版本1 (object IEnumerator.Current)时提供?在使用版本2(公共人员当前)时提供?<code>H 110</code>如何在foreach语句中使用PeopleEnum。//更新的
public class PeopleEnum : IEnumerator
{
public Person[] _people;
// Enumerators are positioned before
我很想知道SingleOrFallback方法是如何在中实现的,并发现了一些我以前从未见过的东西:
public static T SingleOrFallback<T>(this IEnumerable<T> source, Func<T> fallback)
{
source.ThrowIfNull("source");
fallback.ThrowIfNull("fallback");
using (IEnumerator<T> iterator
如果我错了,请纠正我,但在执行foreach时,无论T是什么,IEnumerable<T>都会产生垃圾。但是我想知道你是否有一个List<T>,其中T是实体。然后假设列表中有一个派生类,比如Entity2D。它是否必须为每个派生类创建一个新的枚举器?因此,创建垃圾?
还有,有一个接口,比方说IEntity as T,会产生垃圾吗?
自从获得Resharper以来,我一直热衷于在任何可能的情况下使用var内部方法。因此,稍后,如果您传入不同的类型,更改将通过您的代码逐级向下传递,而不必将每个int声明更改为double。这就引出了我的问题。我正在从DataList中检索DataListItems的列表
var daysWorked = dlResourcesAllocated.Items;
然后遍历它返回的列表
foreach (var d in daysWorked)
{
var c = d.FindControl("ucSomethingSomething"); //Doesn't c