请勿将默认值用于double

问题描述

| 我想在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);
    }
    

解决方法

双精度是值类型,因此不能分配为null或\“ empty \”。如果需要此功能,请尝试使用可为null的double。
Nullable<double>
double?
应该都可以。 请注意,使用可为空的值类型时,您将需要先检查它是否为null,否则将冒一个
NullReferenceException
的风险,而如果未分配,则
double
默认为
0
。     ,使用
Double?
(即可以为null的Double),其默认值为null,并且仅当文本框不为空且可以解析时,您才分配一个值。     ,这是确定一个或两个字段是否为空的一种方法。根据需要使用特定变量进行重构。
string one = txt1.Text;  
string two = txt2.Text;

string result = (string.IsNullOrEmpty(one) || string.IsNullOrEmpty(two))
                 ?string.Empty
                 :double.Parse(one) + double.Parse(two);
    ,您可以使用if语句:
    if (operand1 != 0) { // do something.. }
    else { // do something.. }
您也可以为第二个操作数执行此操作。 例: https://www.dropbox.com/s/snvonqubqpkue99/Form1.cs?dl=0