7 Stimmen

Standardwert für double nicht verwenden

Mit C# in ASP.NET möchte ich das Ergebnis von zwei Textfeldern nehmen, sie addieren, wenn eine Schaltfläche gedrückt wird, und das Ergebnis anzeigen. Wenn jedoch eines oder beide Felder leer sind, möchte ich nicht, dass ein Ergebnis angezeigt wird.

Im Moment erhalte ich immer 0 als Ergebnis, wenn beide Felder leer sind. Ich bin mir ziemlich sicher, dass dies daran liegt, dass den beiden Eingabezahlen (Doppelwerte) standardmäßig 0 zugewiesen wird. Wie kann ich auf leere Felder prüfen?

Dies ist meine Methode in meinem Controller.

    [HttpPost]
    public ActionResult French(FrenchModel model, string returnUrl)
    {

        switch (model.operation)
        {
            case 1:
                model.result = model.numberOne + model.numberTwo;
                break;
            case 2:
                model.result = model.numberOne - model.numberTwo;
                break;
            case 3:
                model.result = model.numberOne * model.numberTwo;
                break;
            case 4:
                model.result = model.numberOne / model.numberTwo;
                break;
        }

        return View(model);
    }

13voto

Adam Price Punkte 9807

Doubles sind Werttypen und können daher nicht mit Null oder "leer" belegt werden. Wenn Sie diese Fähigkeit wünschen, versuchen Sie es mit einem nullable double. Entweder Nullable<double> o double? sollte funktionieren.

Seien Sie sich darüber im Klaren, dass Sie bei Verwendung eines nullbaren Werttyps diesen auf null prüfen müssen, bevor Sie ihn verwenden, oder Sie riskieren eine NullReferenceException während double wird standardmäßig auf 0 wenn nicht zugewiesen.

4voto

AD.Net Punkte 13256

使用する Double? d.h. nullable Double, sein Standardwert ist null, und Sie werden nur dann einen Wert zuweisen, wenn das Textfeld nicht leer ist und Sie es analysieren können.

2voto

p.campbell Punkte 94960

Hier eine Möglichkeit, um festzustellen, ob eines oder beide Felder leer sind. Passen Sie die Variablen nach Bedarf an.

string one = txt1.Text;  
string two = txt2.Text;

string result = (string.IsNullOrEmpty(one) || string.IsNullOrEmpty(two))
                 ?string.Empty
                 :double.Parse(one) + double.Parse(two);

0voto

Sie können if-Anweisungen verwenden:

    if (operand1 != 0) { // do something.. }
    else { // do something.. }

Sie können dies auch für den zweiten Operanden tun

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X