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

C# 在c中的十进制函数中返回空字符串#,c#,asp.net,asp.net-mvc,linq-to-sql,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;

我创建了一个函数来比较我的物品的价格。 这是我的职责:

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;
        }

    }

如果两者(price和websiteprice)都等于0.00,那么它将返回空字符串,我知道在函数设置为decimal类型时不可能返回字符串,但我不知道该怎么办。有人能帮忙吗?谢谢。

您总是可以返回类似decimal.MinValue的内容,这表明它们都是零价格项。

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

C#已经有很长一段时间了,请尝试像这样定义您的方法,并为所讨论的案例返回null:


公共静态十进制?ComparePrice(decimal Price,decimal WebsitePrice)

如果在应用程序逻辑中有意义,可以使用可为null的类型并使用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用于使用实现此功能的标准方法。嗯。。。如果返回0.0,则必须在视图中再次测试,如果返回值=0.0,则显示空字符串。因为所有的项目都不应该显示其价格=0.0。考虑使用安东尼和弗朗西斯科建议的可空类型。