Возвращать значение null в методе

Я публичный двойной mgToGrain ( двойной мг ) { double grain = mg * myValues [ "mgTograin" ]; возврат зерна ; if ( mg < 0 ) { return null ; } } ` to make конвертер, который преобразует метрики в империалы. Также я делаю для него единичный тест. удваивать? я передаю отрицательное значение, метод должен возвращаться дважды. Возможно ли вернуть double.NaN из метода, который возвращает public double mgToGrain ( двойной мг ) { если ( мг < 0 ) возвращается дважды . NaN ; else return mg * myValues [ "mgTograin" ]; } ... double x = ... if ( double . IsNaN ( mgToGrain ( x ))) { ... } .

Nullable

c#,null,double,

2

Ответов: 6


7 принят

Возможной альтернативой тому, что Nullable<double>вы должны придерживаться, double?является ( не число ): public double? mgToGrain(double mg) { if (mg < 0) { return null; } double grain = mg * myValues["mgTograin"]; return grain; }

if

3

Типы значений не могут быть нулевыми. Вы должны использовать тип, либо путем возврата, либоpublic double? mgToGrain(double mg) { return null; }return grain;public double? mgToGrain(double mg) { double grain = mg * myValues["mgTograin"]; if (mg < 0) { return null; } return grain; }

null

Также исправлен код, когда вы возвращаетесь из функции раньше if.

Здесь у вас есть действительно хорошие объяснения abdouble типов значений и null.


2

Проверьте эту статью Nullable Types

double?

1

Вам нужно будет определить свой результат как обнуляемый, и он должен работать (а также перейти Nullable<double>к концу, иначе он будет слишком быстро):

null

1

Вы не можете вернуться nullиз метода, объявленного для возврата double. У вас есть несколько вариантов создания API здесь:

  • Return try, AKAcatch - для этого подхода потребуются абоненты для проверки значения nullдо его использования или применения коллаборации null для обработки недопустимых значений возврата
  • Выбросьте исключение. Такой подход позволит вам продолжать возвращаться double. Звонящие, которые хотят обрабатывать ошибки, нуждаются в try/ outблоке
  • Верните значение, указывающее на успех или неудачу, и установите результат преобразования в outпараметр - это будет похоже на API TryParseи TryGetValueAPI в .NET.

Примечание. Перед возвратом из метода вам нужно проверить отрицательный результат. В вашей текущей реализации код, который проверяет наличие негативов, недостижим.

C #, нулевой, двойной,
Похожие вопросы