Возврат пустой строки в десятичной функции в c # - PullRequest
0 голосов
/ 14 декабря 2011

Я создаю функцию для сравнения цены моего товара.Это моя функция:

public static decimal ComparePrice(decimal Price, decimal WebsitePrice)
    {
        decimal ZERO_PRICE = 0.00000M;
        if(Price == ZERO_PRICE && WebsitePrice > ZERO_PRICE){
            return WebsitePrice;
        }else if(Price == ZERO_PRICE && WebsitePrice == ZERO_PRICE){
            return "";
        }else{
            return Price;
        }

    }

, если оба (цена и цена на сайте) равны 0,00, тогда он вернет пустую строку, я знаю, что невозможно вернуть строку, пока функция установлена ​​вдесятичный тип, но я понятия не имею, что мне с этим делать.Кто-нибудь может помочь?Спасибо.

Ответы [ 4 ]

6 голосов
/ 14 декабря 2011

Если это имеет смысл в логике вашего приложения, вы можете использовать тип Nullable и использовать ноль вместо пустой строки.Например:

public static decimal? ComparePrice(decimal Price, decimal WebsitePrice)
    {
        if(Price == decimal.Zero && WebsitePrice > decimal.Zero){
            return WebsitePrice;
        }else if(Price == decimal.Zero && WebsitePrice == decimal.Zero){
            return null;
        }else{
            return Price;
        }

    }

Или используйте Decimal.MinValue, как предложено в качестве флага для недействительного.(Опять же, мне больше нравится нуль, просто если это действительно допустимое значение в вашей логике).

2 голосов
/ 14 декабря 2011

Почему бы вам не вернуть простой 0.0 Конечно, когда оба значения равны 0,0 .. возвращение 0,0 имеет смысл.

2 голосов
/ 14 декабря 2011

C # уже довольно давно имеет обнуляемых типов , попробуйте определить свой метод следующим образом и вернуть ноль для рассматриваемого случая:

public static decimal? ComparePrice(decimal Price, decimal WebsitePrice)

1 голос
/ 14 декабря 2011

Вы всегда можете вернуть что-то вроде decimal.MinValue, которое бы указывало, что они оба были нулевой ценой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...