Я считаю, что хорошо работает следующее:
double? val1 = null;
double? val2 = 5.7d;
var s1 = string.Format("{0:c}", val1); // outputs: ""
var s2 = string.Format("{0:c}", val2); // outputs: $5.70
Я бы не стал сильно беспокоиться о производительности в этом случае, и сам бы больше заботился о правильности и ясности.
Я бы также предложил вам рассмотреть возможность использования string.Format()
или StringBuilder
вместо отдельных фрагментов строк. Не это огромная сделка, но она без необходимости выделяет и отбрасывает промежуточные строки; который, если вы беспокоитесь о производительности, вы, вероятно, захотите устранить; например:
htmlReceipt +=
string.Format( "<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3:c}</td></tr>",
item.Title, item.Description, item.Volume, item.listPrice );