Hinzufügen Sammlung, wenn Nicht Null
Ich habe ein sehr großes Objekt mit vielen nullable-Variablen-Typen. Ich habe auch ein Wörterbuch, das will ich füllen mit diesem Objekt der nicht-null-Variablen.
Wird der code wie folgt Aussehen
if (myObject.whatever != null)
{
myDictionary.Add("...",myObject.whatever);
}
if (myObject.somethingElse != null)
{
myDictionary.Add("...",myObject.somethingElse);
...
BEARBEITEN (Leider verhunzt der code)
Wenn wir wiederholen zum x-TEN mal bekommen wir ein Durcheinander von sehr langen code. Gibt es eine kürzeren Weg, ich könnte schreiben, dieses Chaos? Ich weiß über die Bedingte Operator (alias ?) aber das ist nur für Zuordnungen. Gibt es so etwas wie, dass für das hinzufügen zu einer Sammlung?
InformationsquelleAutor der Frage Aabela | 2012-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie über eine extension-Methode für Ihr Wörterbuch?
Könnte man dann so machen:
InformationsquelleAutor der Antwort Botz3000
Ich würde empfehlen, das schreiben einer extension Methode:
Mit
(object)value != null
sorgt dafür, dass dies funktioniert, wie Sie erwarten würden, mit auf null festlegbaren Typen (z.B.int?
) Werttypen (z.B.int
) und Referenz-Typen (z.B.SomeClass
). Wenn Sie es vergleichen, umdefault(TValue)
dann einint
von0
wird nicht Hinzugefügt, obwohl es nicht null ist. Wenn Sie einenTValue : class
Anforderung, die Sie nicht verwenden könnenNullable<T>
als die Art, es klingt wie ist Ihre häufigste Verwendung.InformationsquelleAutor der Antwort Tim S.
Können Sie eine Methode, die versteckt Ihre
if
:Können Sie verdienen einige Punkte für Stil", indem Sie die Methode einer Erweiterung (Sie müssen es hinzufügen, um eine statische Klasse):
Wenn Sie wissen, dass Sie einfügen, die nur den Typ der Referenz-Objekte ersetzen
default(T)
mitnull
und fügen Sie eineclass T
Einschränkung auf den generischen.InformationsquelleAutor der Antwort dasblinkenlight
Wenn es nicht ein performance-problem: Warum nicht fügen Sie alles und entfernen Sie dann, was Sie nicht brauchen?
InformationsquelleAutor der Antwort Philipp
etc
InformationsquelleAutor der Antwort Shai