Pass nullable argument an eine Methode
Diesem meiner aktuellen Methode, aber von Zeit zu Zeit habe ich, um mit diesem problem umzugehen, und ich möchte wissen, ob es elegantere Art und Weise.
Habe ich : long? LoadEntityId
Feld. Ich habe eine Methode, wo ich das als ein argument benutzen :
private bool IsUsedInProduction(long? loadEntityId)
Das problem ist, dass wenn LoadEntityId
tatsächlich null bekomme ich Nullable object must have a value.
Was ich jetzt Tue, ist dieses :
if ((byte)cboStatus.SelectedValue == 10
&& LoadEntityId.HasValue
&& IsUsedInProduction(LoadEntityId.Value))
Aber ich denke, es sollte besser Weg zu manage dieses problem.
P. S
Es scheint war ich nicht klar genug in meinen Erklärungen so das problem ist, dass wenn ich:
if ((byte)cboStatus.SelectedValue == 10
&& IsUsedInProduction(LoadEntityId.Value))
(entfernen LoadEntityId.HasValue-check), wenn LoadEntityId ist eigentlich null ich bekommen, Ausnahme, wenn ich es verlassen - auch ich einfach nur nach einem Weg, um meinen code zu arbeiten, ohne diese zu überprüfen.
Wo genau ist die Ausnahme, die ausgelöst über die nullable-Wert?
Warum sind Sie die überprüfung für einen Wert, wenn das argument null gesetzt werden sowieso? Kannst du nicht einfach verwenden
if ((byte)cboStatus.SelectedValue == 10 && IsUsedInProduction(LoadEntityId))
Wenn ich den Kommentar
LoadEntityId.HasValue
das ist, was ich tun möchte - entfernen Sie diesen aus der if statement
der Fehler ausgelöst wird innerhalb der if statment
: ` wenn ((byte)cboStatus.SelectedValue == 10/* && LoadEntityId.HasValue */&& IsMaterialUsed(LoadEntityId.Wert)). More specificly -
IsMaterialUsed(LoadEntityId.Wert))` - hier. Ich möchte nur wissen, ob es irgendeine Weise zu übergeben Sie null, wie es scheint, ich kann nicht tun es natürlich auch wenn meine Methode akzeptiert long?
Dann Lee ist richtig, nur ommit die
.Value
zu IsUsedInProduction
InformationsquelleAutor Leron | 2013-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
verwenden Sie den richtigen Ansatz.
gibt es drei Optionen:
1) überprüfen Sie loadEntityId.HasValue und dann mit loadEntityId.Wert (was Sie jetzt nutzen)
2) verwenden loadEntityId.GetValueOrDefault()
3) verwenden ?? Betreiber
Sie sind willkommen:)
InformationsquelleAutor Dmitry Khryukin
Wenn Sie erklären:
ist eigentlich das gleiche wie:
So, wenn Sie passieren
null
zu der Methode, eine Nullable-Typ-Objekt erstellt, woloadEntityId.HasValue
gleichfalse
undloadEntityId.Value
und wirft Exception wenn Sie aufgerufen werden, denn das ist kein Wert. Balg-es ist ein Beispiel für den sinnvollen Einsatz der null. Zusätzliche Info: http://msdn.microsoft.com/en-us/library/1t3y8s4s.aspxDefinition Beispiel:
Aufruf Beispiele:
InformationsquelleAutor hiddenbyte
Bin ich mir nicht 100% sicher, was du fragst, aber ich denke, die Antwort kann das sein ?? Betreiber:
Dies bedeutet, dass der Wert der loadEntity wird verwendet, wenn es einen hat, wenn es null, dann wird der Wert -1 verwendet.
InformationsquelleAutor Steve