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.

Was ist falsch mit, dass der code genau?
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

Schreibe einen Kommentar