Laden...

Was bedeutet [] beim Erstellen einer Liste?

Letzter Beitrag vor 2 Monaten 4 Posts 305 Views
Was bedeutet [] beim Erstellen einer Liste?

Hallo Zusammen,

ich habe mal eine kurze frage zu

ObservableCollection<myname> liste = new ObservableCollection<myname>();

ich benutze diese Collecion viel in meiner WPF. Jetzt ist meine ansicht fast fertig und es Funktioniert alles. jetzt hat ein Kollege von mir, warum auch immer, ein Code Cleaner über das Programm laufen lassen.......

jetzt steht das aber nicht mehr so da

ObservableCollection<myname> liste = new ObservableCollection<myname>();

sondern so

ObservableCollection<myname> liste = [];

ich konnte so nicht dazu finden ist das zweite richtig? oder kann das zu Problemen führen?

Ja, das ist äquivalent und seit C# 12 (.NET 8) verfügbar, s.a. Sammlungsausdrücke (auf engl. "collection expressions").

Der von deinem Kollegen verwendete Code Cleaner bezieht sich auf die Stilregel Auflistungsinitialisierer oder Sammlungsausdrücke verwenden (IDE0028).

Ich persönlich verwende aber immer noch die Form

ObservableCollection<MyType> list = new();

da ich dies intuitiver zu lesen finde.

PS: Du hättest besser ein eigenes Thema dafür erstellt.

Hinweis von Abt vor 2 Monaten

Thema abgeteilt.

danke dir!

ja , bei nächsten mal denke ich dran.

ObservableCollection<MyType> list = new();

da ich dies intuitiver zu lesen finde.

Nicht nur das, sondern weil [] auch einfach einen anderen Typ erzeugen kann.

Beispiel:

Bei EF Core ist strikt empfohlen alle Relationen als HashSet zu definieren.

public ICollection<MyEntity> MyEntities { get; set; } = new HashSet<MyEntity>();

Würde man hier mit [] arbeiten, würde eine List<MyEntity> initialisiert werden, was eine völlig andere Wirkung auf die Arbeistweise von EF Core hat - ein Fehler, der in sehr bösen Race Conditions / Komplikationen enden kann.


[] ist echt nett, aber teilweise eine böse Falle.