在c#中返回十进制函数中的空字符串

时间:2011-12-14 02:25:31

标签: c# asp.net asp.net-mvc linq-to-sql

我创建了一个比较物品价格的功能。 这是我的功能:

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 个答案:

答案 0 :(得分:6)

如果在应用程序逻辑中有意义,则可以使用Nullable类型并使用null而不是空字符串。喜欢:

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作为无效标志。 (我更喜欢null,再次,如果这实际上是逻辑中的有效值)。

答案 1 :(得分:2)

为什么不回归简单0.0 当然,当两个值都是0.0时,返回0.0是有道理的。

答案 2 :(得分:2)

C#已经有nullable types了很长一段时间了,尝试像这样定义你的方法并为相关案例返回null:

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

答案 3 :(得分:1)

你总是可以返回一些像decimal.MinValue这样的东西,表明它们都是零价格物品。