I have an application with a lot of calls to Decimal.ToString(void). The default format is not what is needed. I could change these calls to one of the other Decimal.ToString overloads, but it would be nicer if I didn't have to. So, is there a way to specify a different format for the Decimal.ToString(void) method so that I don't have to modify any of the calls to this method?
Update
As the answer below indicates, it is possible to do what I want, but I should not do so as it is not good programming practice. There are many alternative approaches which involve rewriting the calls; the approach I plan to go with is to store the desired format as a string constant and pass that to the calls:
class Example
{
const string s_DecimalFormat = "N2";
private decimal myDecimal1 = 12.345;
private decimal myDecimal2 = 6.7;
public void Method()
{
System.Console.WriteLine(myDecimal1.ToString(s_DecimalFormat));
System.Console.WriteLine(myDecimal2.ToString(s_DecimalFormat));
}
}
A extension method might be nice here. Something like:
I agree with @nvoigt that changing the globalization settings is a bad idea
You could write your own extension method. As an example:
Output:
When using Decimal.ToCustomString instead of ToString, at least in this case, the decimals are prefaced with "Blah "
You can write the extension method in the format that you would like to return, granted you would need to use the extension method rather than .ToString()
Theoretically, if you change
System.Globalization.CultureInfo.CurrentCulture
to something that formats a decimal the way you want, this would work. It will open up a huge can of worms you don't want to touch with a ten-foot pole. Do not do this. Change all your calls. Maybe write a method for it.