Не ‘ использовать значение по умолчанию для двойного

#c# #asp.net #default-value

#c# #asp.net #значение по умолчанию

Вопрос:

Использование C # в ASP.NET я хочу взять результат двух текстовых полей, добавить их при нажатии кнопки и отобразить результат. Однако, если одно или оба поля пусты, я не хочу, чтобы отображался какой-либо результат.

Прямо сейчас я продолжаю получать 0 в качестве результата, если оба поля пусты. Я почти уверен, что это потому, что двум входным числам (double) присваивается значение по умолчанию 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);
    }
  

Ответ №1:

Double — это типы значений, и поэтому ему нельзя присвоить значение null или «empty». Если вам нужна эта возможность, попробуйте использовать значение double с нулевым значением. Либо Nullable<double> , либо double? должно сработать.

Имейте в виду, что при использовании типа значения с возможностью обнуления вам нужно будет проверить его на значение null, прежде чем использовать его, иначе вы рискуете, NullReferenceException тогда как double значение по умолчанию равно 0 , если оно не назначено.

Комментарии:

1. Спасибо. Я переключил свой «double» на «double?», и это работает, когда ничего не вводится. Тем не менее, я не проверяю наличие ошибок, и это не сбой.

2. Я не столкнулся с NullReferenceException для тестирования, которое я проводил. Я тестировал метод, чтобы проверить, правильно ли он присваивает новое значение double. Чтобы проверить это, я проверил значение по умолчанию (double), которое работало только для некоторых методов этого класса (я не создавал класс и не имел доступа к его исходному коду), но когда я изменил свои проблемные значения с double на double? , а затем мое сравнение с default (double?), в королевстве снова все было в порядке.

Ответ №2:

Используйте Double? ie с нулевым значением Double, его значение по умолчанию равно null, и вы будете присваивать значение, только если текстовое поле не пустое и вы можете его проанализировать.

Ответ №3:

Вот один из способов определить, являются ли одно или оба поля пустыми. Реорганизуйте, как вам нужно, с вашими конкретными переменными.

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

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

Ответ №4:

Вы можете использовать инструкции if:

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

Вы также можете сделать это для второго операнда