IFormattable.ToString(String, IFormatProvider) Methode

Definitie

Hiermee wordt de waarde van het huidige exemplaar opgemaakt met behulp van de opgegeven indeling.

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

Parameters

format
String

De indeling die moet worden gebruikt.

– of –

Een null-verwijzing (Nothing in Visual Basic) om de standaardindeling te gebruiken die is gedefinieerd voor het type IFormattable-implementatie.

formatProvider
IFormatProvider

De provider die moet worden gebruikt om de waarde op te maken.

– of –

Een null-verwijzing (Nothing in Visual Basic) om de numerieke notatiegegevens op te halen uit de huidige landinstelling van het besturingssysteem.

Retouren

De waarde van het huidige exemplaar in de opgegeven indeling.

Voorbeelden

In het volgende voorbeeld ziet u een Temperature klasse waarmee de ToString methode wordt geïmplementeerd. Dit codevoorbeeld maakt deel uit van een groter voorbeeld voor de IFormattable klasse.

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

Opmerkingen

Met de ToString methode wordt een waarde geconverteerd naar een tekenreeksweergave die op meerdere manieren kan worden uitgedrukt. De exacte notatie is afhankelijk van specifieke symbolen of een opgegeven volgorde die is gedefinieerd door specifieke culturen, beroepen of industrieën. U kunt de methode rechtstreeks aanroepen. Het wordt ook automatisch aangeroepen door de methoden Convert.ToString(Object) en Convert.ToString(Object, IFormatProvider), en door methoden die gebruikmaken van de samengestelde opmaakfunctie in het .NET Framework, zoals String.Format(String, Object[]), Console.WriteLine(String, Object[]) en StringBuilder.AppendFormat(String, Object[]). (Zie Samengestelde opmaak voor meer informatie.)

Samengestelde opmaakmethoden roepen de ToString methode eenmaal aan voor elk opmaakitem in een notatietekenreeks. De parameters die aan de methode worden doorgegeven, zijn afhankelijk van de specifieke opmaakmethode die wordt aangeroepen en van de inhoud van het opmaakitem, als volgt:

  • Als het opmaakitem geen notatietekenreeks bevat (bijvoorbeeld als het opmaakitem simpelweg {0}is), wordt het doorgegeven null als de waarde van de System.String parameter.

  • Als het opmaakitem een notatietekenreeks bevat (bijvoorbeeld {0:G}), wordt die notatietekenreeks doorgegeven als de waarde van de System.String parameter.

  • Als de oorspronkelijke methodeaanroep geen parameter bevat System.IFormatProvider , CultureInfo.CurrentCulture wordt doorgegeven als de waarde van de System.IFormatProvider parameter.

  • Als de oorspronkelijke methodeaanroep een System.IFormatProvider parameter bevat, wordt de provider die is opgegeven in de methodeaanroep doorgegeven als de waarde van de System.IFormatProvider parameter.

Note

De implementatie van ToString een object wordt alleen aangeroepen door samengestelde opmaakmethoden als deze niet worden doorgegeven aan een ICustomFormatter indelingsprovider of als de methode van de Format aangepaste indelingsprovider retourneert null.

Het .NET Framework bevat drie indelingsproviders, die allemaal de interface IFormatProvider implementeren:

  • NumberFormatInfo biedt numerieke opmaakgegevens, zoals de tekens die moeten worden gebruikt voor decimaaltekens en groepsscheidingstekens, en de spelling en plaatsing van valutasymbolen in monetaire waarden.

  • DateTimeFormatInfo levert datumgerelateerde en tijdgerelateerde opmaakgegevens, zoals de positie van de maand, de dag en het jaar in een datumpatroon.

  • CultureInfo bevat de standaardopmaakgegevens in een specifieke cultuur, inclusief de numerieke notatiegegevens en datumgerelateerde en tijdgerelateerde opmaakgegevens.

Daarnaast kunt u uw eigen aangepaste indelingsprovider definiëren.

Notities voor uitvoerders

De ToString(String, IFormatProvider) methode moet de notatieaanduiding G (algemeen) ondersteunen. Naast de 'G'-aanduiding kan de klasse de lijst met indelingsaanduidingen definiëren die door de klasse worden ondersteund. Bovendien moet de klasse worden voorbereid om een indelingsaanduiding te verwerken.null Zie Opmaaktypen voor meer informatie over opmaak- en opmaakcodes.

Van toepassing op

Zie ook