将foreach添加到我的班级

时间:2013-03-26 01:06:51

标签: c# class

我有一个我创建的测试类,我希望能够创建它的多个实例。然后我想使用foreach迭代每个实例。我看过几个显示IEnumerate的论坛,但是他们让我感到很困惑。任何人都可以给我一个newbe的例子。

我的课程:

using System;
using System.Collections;
using System.Linq;
using System.Text

namespace Test3
{
  class Class1
  {
    public string   Name    { get; set; }
    public string   Address { get; set; }
    public string   City    { get; set; }
    public string   State   { get; set; }
    public string   Zip     { get; set; }  
  }
} 

谢谢

3 个答案:

答案 0 :(得分:2)

您是否需要枚举您的类型的多个实例,或创建一个本身可枚举的类型?

前者很简单:将实例添加到集合中,例如实现List<T>()的{​​{1}}。

IEnumerable<T>

当您使用// instantiate a few instances of Class1 var c1 = new Class1 { Name = "Foo", Address = "Bar" }; var c2 = new Class1 { Name = "Baz", Address = "Boz" }; // instantiate a collection var list = new System.Collections.Generic.List<Class1>(); // add the instances list.Add( c1 ); list.Add( c2 ); // use foreach to access each item in the collection foreach( var item in list ){ System.Diagnostics.Debug.WriteLine( item.Name ); } 语句时,compiler helps out and automatically generatesforeach(例如列表)交互所需的代码。换句话说,您不需要显式编写任何其他代码来迭代这些项。

后者有点复杂,需要自己实施IEnumerable。根据样本数据和问题,我认为这不是您所寻求的。

答案 1 :(得分:1)

您的类只是一个“数据块” - 您需要将类的多个实例存储到某种集合类中,并在集合中使用foreach。

答案 2 :(得分:0)

// Create multiple instances in an array

Class1[] instances = new Class1[100];
for(int i=0;i<instances.Length;i++) instances[i] = new Class1();

// Use foreach to iterate through each instance
foreach(Class1 instance in instances) {

    DoSomething( instance );
}