不要使用双倍的默认值

时间:2011-05-26 21:12:54

标签: c# asp.net default-value

在ASP.NET中使用C#,我想获取两个文本字段的结果,在按下按钮时添加它们,并显示结果。但是,如果其中一个或两个字段为空,我不希望显示任何结果。

现在,如果两个字段都为空,我会一直得到0。我很确定这是因为两个输入数字(双打)被分配了默认值0.我如何检查空字段?

这是我控制器中的方法。

    [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);
    }

4 个答案:

答案 0 :(得分:12)

双打是值类型,因此不能指定为null或“空”。如果您需要此功能,请尝试使用可空双精度型。 Nullable<double>double?应该有效。

请注意,使用可为空的值类型,您需要在使用之前将其检查为null,否则可能导致NullReferenceException冒险,而double如果未分配则默认为0

答案 1 :(得分:4)

使用Double?即可为空的Double,它的默认值为null,只有当textbox不为空且你可以解析它时,你才会分配一个值。

答案 2 :(得分:2)

这是确定一个或两个字段是否为空的一种方法。根据您的特定变量需要重构。

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

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

答案 3 :(得分:0)

您可以使用if语句:

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

您也可以为第二个操作数执行此操作。

实施例: https://www.dropbox.com/s/snvonqubqpkue99/Form1.cs?dl=0