ienumerable

C#中的集合类

拟墨画扇 提交于 2020-03-10 12:03:59
C#中的集合类 1.System.Colloctions中表示集合的行为的接口有: 1)ICollection 定义所有集合的大小、枚举数和同步方法。派生于IEnumerable 它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口) 但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义 2)IEnumerable 公开枚举数,该枚举数支持在集合上进行简单迭代 它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合 基本上所有的集合类都实现了这个接口 3)IList IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口 是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。 4)IDictionary IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口 是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。 IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值 ------------------------------ 2.System.Collections中可以直接使用的集合类有: 1

C#集合类

眉间皱痕 提交于 2020-03-10 11:46:06
C#集合类 1.System.Colloctions中表示集合的行为的接口有: 1)ICollection 定义所有集合的大小、枚举数和同步方法。派生于IEnumerable 它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口) 但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义 2)IEnumerable 公开枚举数,该枚举数支持在集合上进行简单迭代 它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合 基本上所有的集合类都实现了这个接口 3)IList IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口 是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。 4)IDictionary IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口 是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。 IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值 ------------------------------ 2.System.Collections中可以直接使用的集合类有: 1

C#集合类

你。 提交于 2020-03-10 06:01:04
1.System.Colloctions中表示集合的行为的接口有: 1)ICollection 定义所有集合的大小、枚举数和同步方法。派生于IEnumerable 它定义了集合类最基本的行为,所有的集合类都实现了这个接口(基接口) 但是它的行为太过基本:主要就是一个Count属性,单独实现它没有太大意义 2)IEnumerable 公开枚举数,该枚举数支持在集合上进行简单迭代 它只有一个方法 GetEnumerator(),该方法可以返回一个IEnumerator接口,通过它可以遍历集合 基本上所有的集合类都实现了这个接口 3)IList IList实现是可排序且可按照索引访问其成员的值的集合,它本身实现了ICollection和IEnumerable接口 是所有列表的抽象基类。IList 实现有三种类别:只读、固定大小、可变大小。 4)IDictionary IDictionary实现是键/值对的集合,它本身实现了ICollection和IEnumerable接口 是键/值对的集合的基接口。IDictionary 实现有三种类别:只读、固定大小、可变大小。 IDictionary可称为字典、映射或散列表,它根据键(任意类型)来访问值 ------------------------------ 2.System.Collections中可以直接使用的集合类有: 1

IEnumerable 和 IEnumerator 接口

删除回忆录丶 提交于 2020-03-02 03:07:28
实现IEnumerable接口的类,可以支持foreach循环遍历对象的集合元素 IEnumerable: IEnumerator GetEnumerator() 返回可循环访问集合的枚举数。 IEnumerator: object Current 获取集合中的当前元素。 bool MoveNext() 将枚举数推进到集合的下一个元素。 如果枚举数成功地推进到下一个元素,则为 true ;如果枚举数越过集合的结尾,则为 false 。 void Reset() 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。 sample: using System; using System.Collections; namespace ConsoleApplication1 { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main( string [] args) { CStringEnum se = new CStringEnum(); foreach ( string s

IEnumerable和IEnumerator

这一生的挚爱 提交于 2020-03-02 03:03:43
IEnumerable和IEnumerator有什么区别?这是一个很让人困惑的问题(在很多forum里都看到有人在问这个问题)。研究了半天,得到以下几点认识: 1、一个Collection要支持foreach方式的遍历,必须实现IEnumerable接口(亦即,必须以某种方式返回IEnumerator object)。 2、IEnumerator object具体实现了iterator(通过MoveNext(),Reset(),Current)。 3、从这两个接口的用词选择上,也可以看出其不同:IEnumerable是一个声明式的接口,声明实现该接口的class是“可枚举(enumerable)”的,但并没有说明如何实现枚举器(iterator);IEnumerator是一个实现式的接口,IEnumerator object就是一个iterator。 4、IEnumerable和IEnumerator通过IEnumerable的GetEnumerator()方法建立了连接,client可以通过IEnumerable的GetEnumerator()得到IEnumerator object,在这个意义上,将GetEnumerator()看作IEnumerator object的factory method也未尝不可。 来源: https://www.cnblogs.com/lovko

IEnumerable与IEnumerator

你说的曾经没有我的故事 提交于 2020-03-02 03:00:53
IEnumerable接口 IEnumerable接口:实现该接口的类,表明该类下有可以枚举的元素 public interface IEnumerable { //返回一个实现了IEnumerator接口的对象 //我的理解:实现该接口的类,用其下哪个可枚举的元素实现该方法那么当该类被枚举时,将得到该类下的某个可枚举元素的元素 IEnumerator GetEnumerator(); } public class TestEnumerable : IEnumerable { //可枚举元素 private Student[] _students; public TestEnumerable(Student[] list) { _students = list; } public IEnumerator GetEnumerator() { //当TestEnumerator被枚举时,将得到_students的元素 return _students.GetEnumerator(); } } public class Student { public string ID { get; set; } public string Name { get; set; } public Student(string id, string name) { ID = id; Name = name;

IEnumerable、IEnumerator与yield的学习

孤街浪徒 提交于 2020-03-02 02:58:38
我们知道数组对象可以使用foreach迭代进行遍历,同时我们发现类ArrayList和List也可以使用foreach进行迭代。如果我们自己编写的类也需要使用foreach进行迭代时该怎么办呢? IEnumerable: 1 public interface IEnumerable 2 { 3 IEnumerator GetEnumerator(); 4 } 如果自己编写的类需要foreach进行迭代就需要实现IEnumerable接口,表示当前的类可以进行迭代。 我们发现该接口唯一的方法返回的是另一个接口IEnumerator,下面看看这个接口是干嘛的。 IEnumerator: 1 public interface IEnumerator 2 { 3 object Current { get; } 4 bool MoveNext(); 5 void Reset(); 6 } 如果说IEnumerable接口是表示当前类可以进行迭代,那么IEnumerator则是实现迭代逻辑的接口,我们需要编写一个实现IEnumerator接口的类并在其中编写好迭代逻辑。 下面直接上一个例子: People.cs: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System

C# ~ 从 IEnumerable / IEnumerator 到 IEnumerable<T> / IEnumerator<T> 到 yield

对着背影说爱祢 提交于 2020-03-02 02:57:58
IEnumerable / IEnumerator 首先,IEnumerable / IEnumerator 接口定义如下: public interface IEnumerable /// 可枚举接口 { IEnumerator GetEnumerator(); } public interface IEnumerator /// 枚举器接口 { object Current { get; } bool MoveNext(); void Reset(); } 注 :Current 没有 set 方法,在 foreach 中不能修改元素 var item 的值。 IEnumerable:声明式的接口,声明实现了该接口的类是可枚举类型; IEnumerator:实现式的接口,IEnumerator 对象说明如何实现一个枚举器; 通过继承 IEnumerable / IEnumerator 接口实现自定义类使用 foreach 语句来遍历自身元素。逻辑关系图: People <-> MyClass 实现 IEnumerable 接口的 GetEnumerator()方法 EnumeratorPeople <-> MyEnumerator 实现 IEnumerator 接口 定义Person类 public class Person {  private string name;

How do I implement IEnumerable in my Dictionary wrapper class that implements IEnumerable<Foo>?

*爱你&永不变心* 提交于 2020-02-26 09:48:34
问题 I'm trying to create a wrapper for a Dictionary<String,Foo> . Dictionary<String,Foo> implements IEnumerable<KeyValuePair<String,Foo>> , but I want my wrapper class to implement IEnumerable<Foo> . So I tried this: public class FooCollection : IEnumerable<Foo> { private Dictionary<string, Foo> fooDictionary = new Dictionary<string, Foo>(); public IEnumerator<Foo> GetEnumerator() { return fooDictionary.Values.GetEnumerator(); } // Other wrapper methods omitted } However I get this error:

What Should I use? a dictionary, list, or something else [closed]

放肆的年华 提交于 2020-02-23 08:28:20
问题 Closed. This question is off-topic. It is not currently accepting answers. Want to improve this question? Update the question so it's on-topic for Stack Overflow. Closed yesterday . Please excuse the very entry-level nature of this question. I'm very new to c#. When I work with various libraries and components that have objects stored in collections, I'm able to retrieve the object by either the object name or its index. I want to implement a similar collection in c#; however, my