다음을 통해 공유


IFormattable.ToString(String, IFormatProvider) 메서드

정의

지정된 형식을 사용하여 현재 인스턴스 값의 형식을 지정합니다.

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

매개 변수

format
String

사용할 형식입니다.

또는

IFormattable 구현의 형식에 대해 정의된 기본 형식을 사용하려는 경우 null 참조(Visual Basic의 경우 Nothing)입니다.

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합니다. 서식 지정 및 코드 서식 지정에 대 한 자세한 내용은 참조 하세요. 형식합니다.

적용 대상

추가 정보