Возможной альтернативой тому, что Nullable<double>
вы должны придерживаться, double?
является ( не число ): public double? mgToGrain(double mg) { if (mg < 0) { return null; } double grain = mg * myValues["mgTograin"]; return grain; }
if
Я публичный двойной 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
Типы значений не могут быть нулевыми. Вы должны использовать тип, либо путем возврата, либо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.
Вы не можете вернуться null
из метода, объявленного для возврата double
. У вас есть несколько вариантов создания API здесь:
try
, AKAcatch
- для этого подхода потребуются абоненты для проверки значения null
до его использования или применения коллаборации null для обработки недопустимых значений возвратаdouble
. Звонящие, которые хотят обрабатывать ошибки, нуждаются в try
/ out
блокеout
параметр - это будет похоже на API TryParse
и TryGetValue
API в .NET.Примечание. Перед возвратом из метода вам нужно проверить отрицательный результат. В вашей текущей реализации код, который проверяет наличие негативов, недостижим.