我希望这种方法能够处理 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;
}
}
答案 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必须能够转换为十进制。