Teilen über


IFormattable.ToString(String, IFormatProvider) Methode

Definition

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

String

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.

Gilt für

Siehe auch