Für eine Klasse der Lage sein werden iteriert „foreach“ verwendet wird, sollte es die IEnumerable-Schnittstelle implementieren. aber warum kann diese einfache Klasse ohne Implementierung iteriert werden?Warum muss diese Klasse IEnumerable nicht implementieren?
public class Person
{
public int Age { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Person() { }
public Person(string firstName, string lastName, int age)
{
Age = age;
FirstName = firstName;
LastName = lastName;
}
public override string ToString()
{
return string.Format("Name: {0} {1}, Age: {2}",
FirstName, LastName, Age);
}
}
, wenn ich den Code ausführen bekomme ich keine Fehler bezüglich der Verwendung von Foreach
class Program
{
static void Main(string[] args)
{
UseGenericList();
}
static void UseGenericList()
{
List<Person> people=new List<Person>()
{
new Person("Homer","Simpson",47),
new Person {FirstName = "Marge",LastName ="Simpson",Age = 45},
new Person {FirstName = "Lisa",LastName = "Simpson",Age = 9},
new Person {FirstName = "Bart",LastName = "Simpson",Age = 8}
};
Console.WriteLine("Items in the list:{0}",people.Count);
foreach (Person P in people)
{
Console.WriteLine(P);
}
Console.WriteLine("Inserting new person");
people.Insert(2,new Person {FirstName ="Maggie",LastName = "Simpson",Age = 2});
Console.WriteLine("items in the list{0}",people.Count);
Person[] ArraysOfPeople = people.ToArray();
for (int i = 0; i < ArraysOfPeople.Length; i++)
{
Console.WriteLine("First Name:{0}",ArraysOfPeople[i].FirstName);
}
}
}
warum?
Da Sie "List" iterieren, sind Sie ** nicht ** iterierende "Person". Iterating Person würde aussehen wie 'foreach (var etwas in personObject)' und natürlich würde es scheitern –
Liste implementieren IEnumerable –