IFormattable.ToString(String, IFormatProvider) Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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 doorgegevennullals 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.