IFormattable.ToString(String, IFormatProvider) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Formatiert den Wert der aktuellen Instanz mit dem angegebenen Format.
public:
System::String ^ ToString(System::String ^ format, IFormatProvider ^ formatProvider);
public string ToString (string format, IFormatProvider formatProvider);
public string ToString (string? format, IFormatProvider? formatProvider);
abstract member ToString : string * IFormatProvider -> string
Public Function ToString (format As String, formatProvider As IFormatProvider) As String
Parameter
- format
- String
Das zu verwendende Format.
- oder -
Ein NULL-Verweis (Nothing
in Visual Basic), um das Standardformat zu verwenden, das für den Typ der IFormattable-Implementierung definiert ist.
- formatProvider
- IFormatProvider
Der Anbieter, der zum Formatieren des Werts verwendet werden soll.
- oder -
Ein NULL-Verweis (Nothing
in Visual Basic), um die Zahlenformatinformationen aus dem aktuellen Gebietsschema des Betriebssystems abzurufen.
Gibt zurück
Der Wert der aktuellen Instanz im angegebenen Format.
Beispiele
Im folgenden Beispiel wird eine Temperature
Klasse veranschaulicht, die die ToString Methode implementiert. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die IFormattable Klasse bereitgestellt wird.
using System;
using System.Globalization;
public class Temperature : IFormattable
{
private decimal temp;
public Temperature(decimal temperature)
{
if (temperature < -273.15m)
throw new ArgumentOutOfRangeException(String.Format("{0} is less than absolute zero.",
temperature));
this.temp = temperature;
}
public decimal Celsius
{
get { return temp; }
}
public decimal Fahrenheit
{
get { return temp * 9 / 5 + 32; }
}
public decimal Kelvin
{
get { return temp + 273.15m; }
}
public override string ToString()
{
return this.ToString("G", CultureInfo.CurrentCulture);
}
public string ToString(string format)
{
return this.ToString(format, CultureInfo.CurrentCulture);
}
public string ToString(string format, IFormatProvider provider)
{
if (String.IsNullOrEmpty(format)) format = "G";
if (provider == null) provider = CultureInfo.CurrentCulture;
switch (format.ToUpperInvariant())
{
case "G":
case "C":
return temp.ToString("F2", provider) + " °C";
case "F":
return Fahrenheit.ToString("F2", provider) + " °F";
case "K":
return Kelvin.ToString("F2", provider) + " K";
default:
throw new FormatException(String.Format("The {0} format string is not supported.", format));
}
}
}
open System
open System.Globalization
type Temperature(temperature: decimal) =
do
if temperature < -273.15M then
raise (ArgumentOutOfRangeException $"{temperature} is less than absolute zero.")
member _.Celsius =
temperature
member _.Fahrenheit =
temperature * 9M / 5M + 32M
member _.Kelvin =
temperature + 273.15m
override this.ToString() =
this.ToString("G", CultureInfo.CurrentCulture)
member this.ToString(format) =
this.ToString(format, CultureInfo.CurrentCulture)
member this.ToString(format, provider: IFormatProvider) =
let format =
if String.IsNullOrEmpty format then "G"
else format
let provider =
if isNull provider then
CultureInfo.CurrentCulture :> IFormatProvider
else provider
match format.ToUpperInvariant() with
| "G" | "C" ->
temperature.ToString("F2", provider) + " °C"
| "F" ->
this.Fahrenheit.ToString("F2", provider) + " °F"
| "K" ->
this.Kelvin.ToString("F2", provider) + " K"
| _ ->
raise (FormatException $"The {format} format string is not supported.")
interface IFormattable with
member this.ToString(format, provider) = this.ToString(format, provider)
Imports System.Globalization
Public Class Temperature : Implements IFormattable
Private temp As Decimal
Public Sub New(temperature As Decimal)
If temperature < -273.15 Then _
Throw New ArgumentOutOfRangeException(String.Format("{0} is less than absolute zero.", _
temperature))
Me.temp = temperature
End Sub
Public ReadOnly Property Celsius As Decimal
Get
Return temp
End Get
End Property
Public ReadOnly Property Fahrenheit As Decimal
Get
Return temp * 9 / 5 + 32
End Get
End Property
Public ReadOnly Property Kelvin As Decimal
Get
Return temp + 273.15d
End Get
End Property
Public Overrides Function ToString() As String
Return Me.ToString("G", CultureInfo.CurrentCulture)
End Function
Public Overloads Function ToString(fmt As String) As String
Return Me.ToString(fmt, CultureInfo.CurrentCulture)
End Function
Public Overloads Function ToString(fmt As String, provider As IFormatProvider) _
As String _
Implements IFormattable.ToString
If String.IsNullOrEmpty(fmt) Then fmt = "G"
If provider Is Nothing Then provider = CultureInfo.CurrentCulture
Select Case fmt.ToUpperInvariant()
Case "G", "C"
Return temp.ToString("F2", provider) + " °C"
Case "F"
Return Fahrenheit.ToString("F2", provider) + " °F"
Case "K"
Return Kelvin.ToString("F2", provider) + " K"
Case Else
Throw New FormatException(String.Format("The {0} format string is not supported.", fmt))
End Select
End Function
End Class
Hinweise
Die ToString Methode konvertiert einen Wert in eine Zeichenfolgendarstellung, die auf mehrere Arten ausgedrückt werden kann. Das genaue Format hängt von bestimmten Symbolen oder einer angegebenen Reihenfolge ab, die von bestimmten Kulturen, Berufen oder Branchen definiert wird. Sie können die Methode direkt aufrufen. Es wird auch automatisch von den Convert.ToString(Object) Methoden und Convert.ToString(Object, IFormatProvider) Methoden aufgerufen, die das zusammengesetzte Formatierungsfeature in der .NET Framework verwenden, zString.Format(String, Object[]). B. , Console.WriteLine(String, Object[])und StringBuilder.AppendFormat(String, Object[]). (Weitere Informationen finden Sie unter Zusammengesetzte Formatierung.)
Zusammengesetzte Formatierungsmethoden rufen die ToString Methode einmal für jedes Formatelement in einer Formatzeichenfolge auf. Die an die Methode übergebenen Parameter hängen von der spezifischen Formatierungsmethode ab, die aufgerufen wird, und vom Inhalt des Formatelements wie folgt:
Wenn das Formatelement keine Formatzeichenfolge enthält (z. B. wenn das Formatelement einfach
{0}
ist), wird es als Wert des System.String Parameters übergebennull
.Wenn das Formatelement eine Formatzeichenfolge (z. B. ) enthält,
{0:G}
wird diese Formatzeichenfolge als Wert des System.String Parameters übergeben.Wenn der ursprüngliche Methodenaufruf keinen Parameter enthält System.IFormatProvider , CultureInfo.CurrentCulture wird er als Wert des System.IFormatProvider Parameters übergeben.
Wenn der ursprüngliche Methodenaufruf einen System.IFormatProvider Parameter enthält, wird der Anbieter, der im Methodenaufruf angegeben wird, als Wert des System.IFormatProvider Parameters übergeben.
Hinweis
Die Implementierung eines ToString Objekts wird nur durch zusammengesetzte Formatierungsmethoden aufgerufen, wenn sie keinen Formatanbieter übergeben ICustomFormatter oder die Format Methode des benutzerdefinierten Formatanbieters zurückgegeben wird null
.
Die .NET Framework umfasst drei Formatanbieter, die alle die IFormatProvider Schnittstelle implementieren:
NumberFormatInfo Stellt numerische Formatierungsinformationen bereit, z. B. die Zeichen, die für Dezimal- und Gruppentrennzeichen verwendet werden sollen, sowie die Rechtschreibung und Platzierung von Währungssymbolen in Währungswerten.
DateTimeFormatInfo Stellt datumsbezogene und zeitbezogene Formatierungsinformationen bereit, z. B. die Position des Monats, den Tag und das Jahr in einem Datumsmuster.
CultureInfo enthält die Standardformatierungsinformationen in einer bestimmten Kultur, einschließlich der numerischen Formatinformationen sowie datumsbezogene und zeitbezogene Formatierungsinformationen.
Darüber hinaus können Sie Ihren eigenen benutzerdefinierten Formatanbieter definieren.
Hinweise für Ausführende
Die ToString(String, IFormatProvider) Methode muss den Formatbezeichner "G" (allgemein) unterstützen. Neben dem G-Bezeichner kann die Klasse die Liste der Formatbezeichner definieren, die sie unterstützt. Darüber hinaus muss die Klasse darauf vorbereitet sein, einen Formatbezeichner zu behandeln, der .null
Weitere Informationen zu Formatierungs- und Formatierungscodes finden Sie unter Formatierungstypen.