You can also define your own format strings to support formatting of your application-defined types.

A format provider returns a formatting object that typically defines the symbols used in converting an object to its string representation. For example, when you convert a number to a currency value, a format provider defines the currency symbol that appears in the result string. The .NET Framework defines three format providers:

In addition, you can define your own custom format providers to supply culture-specific, profession-specific, or industry-specific information used in formatting. For more information about implementing custom formatting by using a custom format provider, see ICustomFormatter.

Classes that require more control over the formatting of strings than Object.ToString provides should implement IFormattable.

A class that implements IFormattable must support the "G" (general) formatting code. Besides the "G" code, the class can define the list of formatting codes that it supports. In addition, the class must be prepared to handle a format specifier that is null. For more information on formatting and formatting codes, see Formatting Types.

The following example defines a Temperature class that implements the IFormattable interface. The class supports four format specifiers: "G" and "C", which indicate that the temperature is to be displayed in Celsius; "F", which indicates that the temperature is to be displayed in Fahrenheit; and "K", which indicates that the temperature is to be displayed in Kelvin. In addition, the IFormattable.ToString implementation also can handle a format string that is null or empty. The other two ToString methods defined by the Temperature class simply wrap a call to the IFormattable.ToString implementation.