Neu in .NET 9.0 [17]: Neue Mengenklasse ReadOnlySet<T>
Die neue Klasse ReadOnlySet<T> vervollständigt die Nur-Lese-Mengen in .NET.
(Bild: Pincasso/Shutterstock.com)
- Dr. Holger Schwichtenberg
.NET 9.0 bietet eine weitere neue Mengenklasse: ReadOnlySet<T>. Wie bei Sets üblich, sind in der Mengenklasse ReadOnlySet<T> keine Duplikate erlaubt. Anders als HashSet<T> können Entwicklerinnen und Entwickler den Inhalt von ReadOnlySet<T> nicht verändern.
Videos by heise
Zur Konstruktion von ReadOnlySet<T> ist eine Menge in Form eines Objekts mit der Schnittstelle ISet<T> erforderlich, also zum Beispiel HashSet<T>:
public void ReadOnlySet()
{
CUI.Demo();
CUI.H1("HashSet<T> erlaubt Hinzufügen/Löschen");
HashSet<string> set1 = new()
{
"www.IT-Visions.de",
"www.dotnet7.de",
"www.dotnet8.de",
"www.dotnet9.de",
"www.dotnet9.de",
"www.dotnettraining.de",
};
var r = set1.Add("www.dotnet9.de");
Console.WriteLine(r ? "URL neu" : "URL schon vorhanden");
set1.Remove("www.dotnet7.de");
foreach (var url in set1)
{
Console.WriteLine(url);
}
CUI.H1("ReadOnlySet<T> erlaubt KEINE Duplikate und kein Hinzufügen/Löschen");
ReadOnlySet<string> set2 = new(set1);
//set2[0] = "www.dotnet6.de" // nicht erlaubt!
//set2.Add("www.dotnet9.de"); // nicht erlaubt!
//set2.Remove("www.dotnet7.de"); // nicht erlaubt!
foreach (var url in set2) // 4 Elemente, da Duplikate entfernt
{
Console.WriteLine(url);
}
}
(Bild:Â Screenshot (Holger Schwichtenberg))
ReadOnlySet<T> vervollständigt die Nur-Lese-Mengen in .NET. Bisher gibt es schon ReadOnlyCollection<T> für alle Mengen, die IList<T> anbieten, und ReadOnlyDictionary<TKey, TValue> für alle Mengen mit IDictionary<TKey, TValue>. ReadOnlySet<T> erlaubt weder Duplikate noch das Hinzufügen, das Ändern oder das Löschen von Elementen.
(rme)