2015-01-29 2 views
0

Я хотел бы, чтобы этот метод имел возможность обрабатывать десятичный? тоже.Как создать метод, который принимает либо двойное, либо десятичное значение в качестве типа параметра

Возможно ли это? Я не хочу использовать объект в качестве типа параметра.

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

no Вам не нужно добавить дополнительную перегрузку для этого. –

+0

'public static string SurroundWithQuotes (double? Amount)' и 'public static string SurroundWithQuotes (десятичная сумма)'? – Tim

ответ

-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 должен быть в состоянии быть отлиты в десятичную.

+0

Отлично, это то, что я имел в виду – MoreCoffee

+1

@MoreCoffee Использование дженериков ничего не дает. Вы также можете просто принять метод «объект», если вы собираетесь идти по этому маршруту. – JLRishe

+0

Общий тип - это только потому, что в какой-то будущей платформе .NET мы должны, вероятно, иметь лучшие ограничения типа, например, где T: CanBeCastedTo decimal' ... Просто шутите, вы правы и должны использовать объект вместо этого. – thepirat000

2

Создайте еще один способ с тем же именем, но используйте десятичный параметр.

public static string SurroundWithQuotes(decimal? amount) 

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

+0

Хорошо, я думаю, это единственный способ. Я не хотел повторять весь метод, но хорошо – MoreCoffee

+0

@MoreCoffee Вам не нужно повторять весь метод. Пожалуйста, см. Мой ответ. – JLRishe

0

Вы можете просто ваш основной вариант метода принять decimal? и сделать перегрузку в одну линию для double?:

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

Это будет работать нормально.

Смежные вопросы