Ich habe eine Klasse, die IEnumerable<T>
hat, wo ich verschiedene Eigenschaften haben möchte, die einen gefilterten IEnumerable<T>
-Zugang bereitstellen.
Also zum Beispiel:
%Vor%Soll das so sein? Nur nicht sicher, darüber komplett.
Danke.
Sie haben die get
/ Klammer vermisst, um daraus eine Methode zu machen. Was ist Box
, meinst du ShapeType.Box
? Vielleicht auch in OnlyBoxes
umbenennen, scheint mehr beschreibend.
Sicher, das sollte funktionieren (soweit ich das beurteilen kann), obwohl @ Mquanders Lösung vielleicht etwas eleganter ist.
Das ist gültig, aber redundant, denke ich. Wenn Sie eine stark typisierte Liste von Formen anzeigen möchten:
%Vor% Die Klasse List<T>
implementiert IEnumerable.
Ich persönlich glaube, dass Ihre Eigenschaft OnlyBox
redundant ist. Da die Benutzer Ihrer Klasse immer die Option haben, Linq wie die folgenden mit der gleichen Leistung zu verwenden. Also, es sei denn, Sie können es besser als die Linq-Methoden, ich denke, es ist in Ordnung, es dem Benutzer der Klasse wie folgt zu lassen:
Aber wenn Sie eine Eigenschaft möchten, anstatt:
%Vor%Sie könnten schreiben:
%Vor%Eine LINQ-ähnliche Mode würde eine Methode für Ihre Sammlung bereitstellen:
%Vor%Oder lassen Sie Benutzer einfach eine Where-Klausel:
%Vor%Ansonsten ist nichts mit IEnumerable als Eigenschaft falsch (Bedenken Sie, dass Eigenschaften so einfach sein sollten, dass sie selten Ausnahmen auslösen).
Ja. Was du hast, ist gut. Sie können auf lambda-basiert konvertieren, wenn Sie ihre Ausdruckskraft bevorzugen, obwohl die Lambda-Version manchmal weniger performant sein kann (nicht so sehr, dass ich eine Lambda-Version auf 2.0 ändern würde, es sei denn, es würde sich als problematisch erweisen. aber genug, dass ich einen perfekt guten 2.0-Style nicht auf Lambda-Basis umstellen würde, es sei denn, es macht ein viel aussagekräftiger.
Tags und Links .net c# collections ienumerable