如何创建一个接受double或decimal作为参数类型的方法

时间:2015-01-29 21:15:01

标签: c#

我希望这种方法能够处理 decimal?

这可能吗?我不想使用object作为参数类型。

    public static string SurroundWithQuotes(double? amount)
    {
        if (amount == null)
        {
            return String.Empty;
        }

        string format = "{0:0,0.00}";
        string formattedNumber = String.Format(format, amount);

        if (amount < 1000)
        {
            return formattedNumber;
        }
        else
        {
            string quote = "\"";
            return quote + formattedNumber + quote;
        }
    }

3 个答案:

答案 0 :(得分:2)

创建另一个具有相同名称的方法,但使用小数参数。

public static string SurroundWithQuotes(decimal? amount)

当您使用小数调用方法时,它将选择正确的方法。 这称为重载。

答案 1 :(得分:0)

您可以让方法的主要版本接受decimal?并为double?进行单行重载:

public static string SurroundWithQuotes(double? amount)
{
    return SurroundWithQuotes((decimal?)amount);
}

这样就可以了。

答案 2 :(得分:-1)

或者您可以使用这样的通用方法:

public static string SurroundWithQuotes<T>(T amount)
{
    if (amount == null)
    {
        return String.Empty;
    }
    string format = "{0:0,0.00}";
    string formattedNumber = String.Format(format, amount);

    decimal amnt = Convert.ToDecimal(amount);

    if (amnt < 1000)
    {
        return formattedNumber;
    }
    else
    {
        string quote = "\"";
        return quote + formattedNumber + quote;
    }
}

约束是类型T必须能够转换为十进制。