BindingList ist eine nützliche Klasse, die besonders in Windows Forms-Anwendungen und bei der Datenbindung verwendet wird.
Was ist eine BindingList?
Eine BindingList ist eine erweiterbare Liste, die das IList-Interface implementiert und zusätzliche Funktionalitäten für Datenbindung bietet. Sie ist besonders nützlich, wenn Sie Daten in UI-Komponenten wie DataGridView, ComboBox oder ListBox anzeigen möchten.
Methoden zum Durchlaufen einer BindingList
1. foreach-Schleife (Empfohlen)
Die einfachste und am häufigsten verwendete Methode ist die foreach-Schleife:
using System;
using System.Collections.Generic;
using System.ComponentModel;
BindingList<string> list = new BindingList<string> { "Element1", "Element2", "Element3" };
foreach (string item in list)
{
Console.WriteLine(item);
}
2. for-Schleife mit Index
Wenn Sie den Index der Elemente benötigen, können Sie eine for-Schleife verwenden:
BindingList<string> list = new BindingList<string> { "Element1", "Element2", "Element3" };
for (int i = 0; i < list.Count; i++)
{
string item = list[i];
Console.WriteLine($"Index {i}: {item}");
}
3. foreach mit manuellem Index
Wenn Sie sowohl das Element als auch den Index benötigen, können Sie eine foreach-Schleife mit einem Zähler verwenden:
BindingList<string> list = new BindingList<string> { "Element1", "Element2", "Element3" };
int index = 0;
foreach (string item in list)
{
Console.WriteLine($"Index {index}: {item}");
index++;
}
4. Verwendung von LINQ-Methoden
Für fortgeschrittene Anwendungen können Sie auch LINQ-Methoden verwenden:
BindingList<string> list = new BindingList<string> { "Element1", "Element2", "Element3" };
// Verwendung von ForEach
list.ForEach(item => Console.WriteLine(item));
// Verwendung von LINQ Select
var result = list.Select((item, index) => new { Item = item, Index = index });
foreach (var item in result)
{
Console.WriteLine($"Index {item.Index}: {item.Item}");
}
Beispiel mit benutzerdefinierten Objekten
Hier ist ein praktisches Beispiel mit einem benutzerdefinierten Datentyp:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
BindingList<Person> people = new BindingList<Person>
{
new Person { Name = "Max Mustermann", Age = 30 },
new Person { Name = "Anna Schmidt", Age = 25 }
};
// foreach-Schleife
foreach (Person person in people)
{
Console.WriteLine($"{person.Name} ist {person.Age} Jahre alt");
}
// Verwendung von LINQ
people.Where(p => p.Age > 25).ToList().ForEach(p =>
Console.WriteLine($"{p.Name} ist älter als 25"));
Wichtige Hinweise
- BindingList implementiert IList, daher funktionieren alle Standard-Methoden zum Durchlaufen von Sammlungen
- Thread-Sicherheit: Wenn Sie die Liste während des Durchlaufs ändern, sollten Sie
lock-Anweisungen verwenden - Leistung: Die
foreach-Schleife ist in der Regel die lesbarste und effizienteste Methode - Ereignisbehandlung: BindingList löst Ereignisse aus, wenn sich Elemente ändern, was für die UI-Datenbindung wichtig ist
Beispiel mit Ereignisbehandlung
BindingList<string> list = new BindingList<string>();
// Ereignisse abonnieren
list.ListChanged += (sender, e) =>
{
Console.WriteLine($"Liste geändert: {e.ListChangedType}");
};
// Durchlaufen der Elemente
foreach (string item in list)
{
Console.WriteLine(item);
}
Fazit
Die Durchsicht einer BindingList in C# ist einfach und unkompliziert. Die foreach-Schleife ist die empfohlene Methode für die meisten Anwendungsfälle, da sie lesbar, effizient und sicher ist. BindingList bietet eine perfekte Kombination aus einfachem Durchlaufen und leistungsstarker Datenbindungsfunktionalität.