IFormattable.ToString(String, IFormatProvider) Metódus

Definíció

Formázza az aktuális példány értékét a megadott formátummal.

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

Paraméterek

format
String

A használni kívánt formátum.

-vagy-

Null hivatkozás (Nothing Visual Basic) a IFormattable implementáció típusához definiált alapértelmezett formátum használatára.

formatProvider
IFormatProvider

Az érték formázásához használni kívánt szolgáltató.

-vagy-

Null hivatkozás (Nothing Visual Basic) a numerikus formátum információinak lekéréséhez az operációs rendszer aktuális területi beállításából.

Válaszok

Az aktuális példány értéke a megadott formátumban.

Példák

Az alábbi példa egy Temperature olyan osztályt mutat be, amely implementálja a metódust ToString . Ez a példakód egy nagyobb, az IFormattable osztályhoz tartozó példa része.

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

Megjegyzések

A ToString metódus egy értéket sztringábrázolássá alakít át, amely több módon is kifejezhető. Pontos formátuma adott szimbólumoktól vagy adott kultúrák, szakmák vagy iparágak által meghatározott sorrendtől függ. A metódust közvetlenül is meghívhatja. A Convert.ToString(Object) és Convert.ToString(Object, IFormatProvider) metódusok, valamint a .NET-keretrendszer összetett formázási funkcióját használó metódusok, például String.Format(String, Object[]), Console.WriteLine(String, Object[]) és StringBuilder.AppendFormat(String, Object[]). (További információ: Összetett formázás.)

Az összetett formázási metódusok egy formátumsztring minden egyes formázási eleméhez egyszer meghívják ToString a metódust. A metódusnak átadott paraméterek a meghívott formázási metódustól és a formátumelem tartalmától függnek, az alábbiak szerint:

Note

Az objektumok implementációját ToString összetett formázási metódusok hívják meg, ha nem adnak át formátumszolgáltatót ICustomFormatter , vagy ha az Format egyéni formátumszolgáltató metódusa visszaadja nullőket.

A .NET-keretrendszer három formátumszolgáltatót tartalmaz, amelyek mindegyike implementálja a IFormatProvider felületet:

  • NumberFormatInfo Numerikus formázási információkat tartalmaz, például a tizedes- és csoportelválasztókhoz használandó karaktereket, valamint a pénznemszimbólumok helyesírását és elhelyezését a pénzügyi értékekben.

  • DateTimeFormatInfo Dátummal és idővel kapcsolatos formázási információkat tartalmaz, például a hónap, a nap és az év pozícióját dátummintában.

  • CultureInfo Egy adott kultúrában az alapértelmezett formázási információkat tartalmazza, beleértve a numerikus formázási információkat, valamint a dátummal és az idővel kapcsolatos formázási információkat.

Emellett saját egyéni formátumszolgáltatót is megadhat.

Megjegyzések az implementálókhoz

A ToString(String, IFormatProvider) metódusnak támogatnia kell a "G" (általános) formátumjelölőt. A "G" kijelölő mellett az osztály definiálhatja az általa támogatott formátumjelölők listáját. Emellett az osztálynak fel kell készülnie egy formátumjelölő kezelésére, amely az null. A formázásról és a formázási kódokról további információt a Formázástípusok című témakörben talál.

A következőre érvényes:

Lásd még