IFormattable.ToString(String, IFormatProvider) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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:
Ha a formátumelem nem tartalmaz formátumsztringet (például ha a formátumelem egyszerűen),
{0}akkor a paraméter értékekéntnulllesz átadvaSystem.String.Ha a formázási elem tartalmaz egy formátumsztringet (például
{0:G}), akkor a program a paraméter értékeként adja át a System.String formátumsztringet.Ha az eredeti metódushívás nem tartalmaz paramétert System.IFormatProvider , CultureInfo.CurrentCulture a paraméter értékeként lesz átadva System.IFormatProvider .
Ha az eredeti metódushívás tartalmaz egy paramétert System.IFormatProvider , a metódushívásban megadott szolgáltató a paraméter értékeként System.IFormatProvider lesz átadva.
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.