IFormattable.ToString(String, IFormatProvider) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 형식을 사용하여 현재 인스턴스의 값 형식을 지정합니다.
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
매개 변수
- formatProvider
- IFormatProvider
값의 형식을 지정하는 데 사용할 공급자입니다.
-또는-
운영 체제의 현재 로캘 설정에서 숫자 형식 정보를 가져오는 null 참조(Visual Basic Nothing)입니다.
반품
지정된 형식의 현재 인스턴스 값입니다.
예제
다음 예제에서는 메서드를 Temperature 구현 하는 클래스를 ToString 보여 줍니다. 이 코드 예제는 클래스에 제공된 더 큰 예제의 IFormattable 일부입니다.
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
설명
이 메서드는 ToString 값을 여러 가지 방법으로 표현할 수 있는 문자열 표현으로 변환합니다. 정확한 형식은 특정 기호 또는 특정 문화권, 직업 또는 산업에서 정의한 지정된 순서에 따라 달라집니다. 메서드를 직접 호출할 수 있습니다. 또한 Convert.ToString(Object) 및 Convert.ToString(Object, IFormatProvider) 메서드와 .NET Framework에서 복합 서식 기능을 사용하는 메서드(예: String.Format(String, Object[]), Console.WriteLine(String, Object[]) 및 StringBuilder.AppendFormat(String, Object[]))에 의해 자동으로 호출됩니다. (자세한 내용은 복합 서식을 참조하세요.)
복합 서식 지정 메서드는 서식 문자열의 ToString 각 형식 항목에 대해 메서드를 한 번 호출합니다. 메서드에 전달되는 매개 변수는 다음과 같이 호출되는 특정 서식 지정 메서드와 형식 항목의 내용에 따라 달라집니다.
서식 항목에 서식 문자열이 포함되지 않은 경우(예: 서식 항목이 단순히
{0}있는 경우) 매개 변수 값null으로 전달됩니다System.String.서식 항목에 서식 문자열(예:
{0:G})이 포함된 경우 해당 형식 문자열은 매개 변수 값 System.String 으로 전달됩니다.원래 메서드 호출에 매개 변수가 System.IFormatProvider 포함되어 있지 않으면 매개 변수 CultureInfo.CurrentCulture 값 System.IFormatProvider 으로 전달됩니다.
원래 메서드 호출에 매개 변수가 포함된 System.IFormatProvider 경우 메서드 호출에 제공된 공급자가 매개 변수 값 System.IFormatProvider 으로 전달됩니다.
메모
개체의 ToString 구현은 복합 서식 지정 메서드가 형식 공급자를 전달하지 않거나 사용자 지정 형식 공급자의 메서드가 반환ICustomFormatter되는 Format 경우에만 null 호출됩니다.
.NET Framework에는 세 가지 형식 공급자가 포함되며, 모두 IFormatProvider 인터페이스를 구현합니다.
NumberFormatInfo 는 소수 및 그룹 구분 기호에 사용할 문자, 통화 기호의 맞춤법 및 배치와 같은 숫자 서식 정보를 통화 값으로 제공합니다.
DateTimeFormatInfo 는 날짜 패턴의 월 위치, 일 및 연도와 같은 날짜 관련 및 시간 관련 서식 정보를 제공합니다.
CultureInfo 에는 숫자 형식 정보, 날짜 관련 및 시간 관련 서식 정보를 포함하여 특정 문화권의 기본 서식 정보가 포함됩니다.
또한 고유한 사용자 지정 형식 공급자를 정의할 수 있습니다.
구현자 참고
메서드는 ToString(String, IFormatProvider) "G"(일반) 형식 지정자를 지원해야 합니다. "G" 지정자 외에도 클래스는 지원하는 형식 지정자 목록을 정의할 수 있습니다. 또한 클래스는 형식 지정자를 null처리할 수 있도록 준비해야 합니다. 코드 서식 지정 및 서식 지정에 대한 자세한 내용은 형식 서식 지정을 참조하세요.