Von auf null festlegbaren Typen als Eigenschaft
Ist es ok zu konstruieren, meine object-Entitäten, die mit diesem Typ?
public class Patient
{
public Datetime? AdmissionDate { get; set; }
public double? AdmissionFee { get; set }
public int? RoomNumber { get; set }
}
Was ist der Nachteil, wenn ich implementiert diese in allen meinen Einrichtungen, weil vor kurzem, habe ich immer die Begegnung situation, wo ich wirklich brauchen, um setzen Sie den Wert auf null, speziell in DateTime. Meine aktuelle Lösung wurde DateTime.MinValue beim Holen von null-datetimes-Datensatz aus der Datenbank, und wenn ich das Ergebnis angezeigt wird, um Ui, ich habe gerade überprüfen Sie es wie folgt.
if (patient.AdmissionDate == Datetime.MinValue)
{
DisplayAdmissionDate(string.empty)
}
else
{
DisplayAdmissionDate(patient.AdmissionDate)
}
Ja, in gridview, ich habe es auf die Datenbindung Ereignis, also wenn ich Millionen von Daten auf dem display, ich dachte Prüfung der datetime - each-Schleife wurde nicht der eleganteste Weg, so, um dieses problem, finde ich diese ? geben Sie, wo ich kann null-Werte, und ich bin Planung zu ?ed alle meine Eigenschaften, auch in Zukunft so ist, setzen die null-Werte dieser Datentypen werden nicht ein problem sein. Jede beraten, Jungs? TIA
InformationsquelleAutor CSharpNoob | 2010-09-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eine jener Situationen, in denen keine einzige dogmatische Antwort deckt alle Fälle ab.
Können Sie nicht Weg mit immer verwenden von auf null festlegbaren Typen (oder immer zu meiden). Sie sollten darüber nachdenken, jedem Fall und verwenden Sie die eine, die Sie tatsächlich benötigen.
Sie erwähnt, dass Sie oft gebraucht werden, eine null -
DateTime
. Warum kannst du nicht einfach einDateTime?
in diesen Fällen? Dies sollte eine unabhängige Betrachtung aus allen anderen Bereichen, insbesondereint
s.Den
null
Wert nullable-Typen ist gemeint der Wert ist so etwas wie unbestimmte, nicht verfügbar oder unbekannt. Es gibt viele Situationen, wo dieses Konzept vorhanden ist (z.B. Benutzer, auf einer Webseite kann oder kann nicht angeben, Ihr Geburtsdatum, so dass sollte einDateTime?
), aber es gibt auch viele Situationen, in denen dieses Konzept keinen Sinn macht (z.B. die Anzahl der Elemente in einer Liste — wenn die Liste selbst nicht null ist, dann ist klar, dass es eine bestimmte Anzahl von Elementen, so dass sollteint
, nichtint?
).InformationsquelleAutor Timwi
Objekt sollte immer enthalten mindestens einen nicht-null-Werte zulässt ValueType als Primärschlüssel. In Ihrem Fall sollten Sie
Diese Weise können Sie immer identifizieren Sie ein Objekt. Der rest der Eigenschaften kann null sein.
Die Prüfung auf null-Werte zulässt, ist völlig in Ordnung, es sei denn, der GridView kann erkennen, dass auf seine eigenen bereits. Nullable-Typen stellt genau für diesen Zweck, so dass ein ValueType haben
null
als Wert. Der performance-Aspekt sollte minimal sein, nicht Komplex ist in irgendeiner Art und Weise und zu optimieren, es wäre ein Fall von premature optimization.Wenn Sie mehr wissen wollen über die Umsetzung von
Nullable<T>
haben Sie einen Blick hier (leider ist die ursprüngliche Seite ist derzeit down, so das webcache-version hat ausreichend zu sein. Der code ist lesbar, obwohl, nur der Beitrag ist abit defekt).Es gibt keinen Nachteil in deinem Fall.
InformationsquelleAutor Femaref
Den Nachteil mit nullable-Typen ist, dass Sie immer überprüfen, um zu sehen, ob Sie einen Wert haben oder nicht vor dem Betrieb auf Sie...
statt nur
Nicht so viel über den ärger mit der Eingabe von ein paar Zeichen, aber mehr um die Lesbarkeit. Und wenn Sie wissen, dass ein Wert nicht ever gonna null sein, machen Sie es nicht nullable...
InformationsquelleAutor Arjan Einbu
Kann es Probleme mit data binding, ich glaube nicht, dass WinForms wird gut zu bewältigen, da es älter als nullable-Typen.
Wenn ein Element null sein kann, im realen Leben dann ein nullable-Typ ist eine gute Lösung, denn es macht das klar. Jedoch nicht nur die Verwendung von Ihnen für die Sache.
InformationsquelleAutor Ian Ringrose