Csharp/C#教程:如何在C#中将类作为IEnumerable?分享


如何在C#中将类作为IEnumerable?

所以我在其中有一个类和一个通用List,但它是私有的。

class Contacts { List contacts; ... } 

我想让这个课有效:

 foreach(Contact in contacts) .... ; 

像这样(不工作):

 Contacts c; foreach(Contact in c) .... ; 

在上面的示例中,Contact类实例c必须返回联系人的每个项目(c的私有成员)

我该怎么做? 我知道它必须是IEnumerable与yield return,但在哪里声明?

实现IEnumerable接口:

 class Contacts : IEnumerable { List contacts; #region Implementation of IEnumerable public IEnumerator GetEnumerator() { return contacts.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } #endregion } 

或者通过提供GetEnumerator方法返回IEnumerator

 class Contacts { List contacts; public IEnumerator GetEnumerator() { foreach (var contact in contacts) yield return contact; } } 

foreach寻找GetEnumerator 。 在这里查看有关此语言规范的详细信息: https : //stackoverflow.com/a/3679993/284240

如何使一个Visual C#类在foreach语句中可用

 public class Contacts: IEnumerable { ...... public IEnumerator GetEnumerator() { return contacts.GetEnumerator(); } } 

应该为你做一个技巧。

 class Program { static void Main(string[] args) { var list = new Contacts(); var a = new Contact() { Name = "a" }; var b = new Contact() { Name = "b" }; var c = new Contact() { Name = "c" }; var d = new Contact() { Name = "d" }; list.ContactList = new List(); list.ContactList.Add(a); list.ContactList.Add(b); list.ContactList.Add(c); list.ContactList.Add(d); foreach (var i in list) { Console.WriteLine(i.Name); } } } class Contacts : IEnumerable { public List ContactList { get; set; } public IEnumerator GetEnumerator() { return ContactList.GetEnumerator(); } IEnumerator IEnumerable.GetEnumerator() { return ContactList.GetEnumerator(); } } class Contact { public string Name { get; set; } } 

如何扩展List

如果您不想扩展任何其他类,那么它是一个非常简单,快速的选项:

上述就是C#学习教程:如何在C#中将类作为IEnumerable?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 class Contacts :List { } 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/985404.html

(0)
上一篇 2021年12月21日
下一篇 2021年12月21日

精彩推荐