이 문서는 기계 번역을 이용하여 번역되었습니다. 문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

IFormattable 인터페이스

 

게시 날짜: 2016년 11월

개체의 값을 문자열 표현으로 서식 지정하는 기능을 제공합니다.

네임스페이스:   System
어셈블리:  mscorlib(mscorlib.dll에 있음)

[ComVisibleAttribute(true)]
public interface IFormattable

이름설명
System_CAPS_pubmethodToString(String, IFormatProvider)

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

IFormattable 인터페이스는 개체 형식 문자열과 형식 공급자에 따라 해당 문자열 표현으로 변환 합니다.

형식 문자열에는 일반적으로 개체의 일반 모양을 정의합니다. 예를 들어.NET Framework는 다음을 지원 합니다.

또한 응용 프로그램 정의 형식의 형식을 지원 하기 위해 고유의 형식 문자열을 정의할 수 있습니다.

형식 공급자는 일반적으로 개체를 문자열 표현으로 변환에 사용 되는 기호를 정의 하는 형식 지정 개체를 반환 합니다. 예를 들어 통화 값으로 숫자를 변환할 때 형식 공급자는 결과 문자열에 표시 되는 통화 기호를 정의 합니다. .NET Framework는 세 가지 형식 공급자를 정의합니다.

또한 문화권별 직업 관련 제공 하도록 사용자 고유의 사용자 지정 형식 공급자를 정의할 수 있습니다 또는 산업 관련 정보를 서식 지정에 사용 합니다. 사용자 지정 형식 공급자를 사용 하 여 사용자 지정 서식을 구현 하는 방법에 대 한 자세한 내용은 참조 ICustomFormatter합니다.

IFormattable 는 단일 메서드를 정의 하는 인터페이스 ToString, 를 구현 하는 형식에 대 한 서식 지정 서비스를 제공 하 합니다. ToString 메서드를 직접 호출할 수 있습니다. 또한 라고에서 자동으로 Convert.ToString(Object)Convert.ToString(Object, IFormatProvider) 메서드 및 사용 하는 메서드에 합성 서식 지정 기능 .NET Framework에서. 이러한 메서드에 Console.WriteLine(String, Object), String.Format, 및 StringBuilder.AppendFormat(String, Object), 특히 합니다. ToString 메서드는 형식 문자열의 각 서식 항목에 대해 호출 됩니다.

IFormattable 인터페이스는 기본 데이터 형식에서 구현 됩니다.

구현자 참고 사항:

클래스 보다는 문자열의 서식을 제어할 필요가 있는 Object.ToString 제공 구현 해야 IFormattable합니다.

구현 하는 클래스 IFormattable "G" (일반) 형식 지정자를 지원 해야 합니다. "G" 지정자 외 클래스에는 지원 되는 형식 지정자 목록이 정의할 수 있습니다. 클래스 형식 지정자는 처리 하기 위해 준비 해야 또한 null합니다. 서식 지정 및 형식 지정 코드에 대 한 자세한 내용은 참조 하십시오. .NET Framework의 형식 서식 지정

다음 예제에서는 Temperature 인터페이스를 구현하는 IFormattable 클래스를 정의합니다. 이 클래스는 네 가지 형식 지정자를 지원: 섭씨;에 표시 되는 온도 인지를 나타내는 "G" 및 "C", 온도 화씨;에 표시 된다는 의미는 "F" 및 "K" 온도를 켈빈으로 표시 될 임을 나타냅니다. 또한는 IFormattable.ToString 구현도 처리할 수 있는 서식 문자열을 null 이거나 비어 있습니다. 다른 두 ToString 의해 정의 된 메서드는 Temperature 클래스 호출을 래핑하는 IFormattable.ToString 구현 합니다.

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));
      }
   }
}

다음 예제에서는 그런 다음 호출에서 IFormattable.ToString 구현을 직접 또는 합성 서식 문자열을 사용 하 여 합니다.

public class Example
{
   public static void Main()
   {
      // Use composite formatting with format string in the format item.
      Temperature temp1 = new Temperature(0);
      Console.WriteLine("{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)\n", temp1);

      // Use composite formatting with a format provider.
      temp1 = new Temperature(-40);
      Console.WriteLine(String.Format(CultureInfo.CurrentCulture, "{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)", temp1));
      Console.WriteLine(String.Format(new CultureInfo("fr-FR"), "{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)\n", temp1));

      // Call ToString method with format string.
      temp1 = new Temperature(32);
      Console.WriteLine("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)\n", 
                        temp1.ToString("C"), temp1.ToString("K"), temp1.ToString("F"));

      // Call ToString with format string and format provider
      temp1 = new Temperature(100)      ;
      NumberFormatInfo current = NumberFormatInfo.CurrentInfo;
      CultureInfo nl = new CultureInfo("nl-NL"); 
      Console.WriteLine("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)", 
                        temp1.ToString("C", current), temp1.ToString("K", current), temp1.ToString("F", current));
      Console.WriteLine("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)", 
                        temp1.ToString("C", nl), temp1.ToString("K", nl), temp1.ToString("F", nl));
   }
}
// The example displays the following output:
//    0.00 °C (Celsius) = 273.15 K (Kelvin) = 32.00 °F (Fahrenheit)
//    
//    -40.00 °C (Celsius) = 233.15 K (Kelvin) = -40.00 °F (Fahrenheit)
//    -40,00 °C (Celsius) = 233,15 K (Kelvin) = -40,00 °F (Fahrenheit)
//    
//    32.00 °C (Celsius) = 305.15 K (Kelvin) = 89.60 °F (Fahrenheit)
//    
//    100.00 °C (Celsius) = 373.15 K (Kelvin) = 212.00 °F (Fahrenheit)
//    100,00 °C (Celsius) = 373,15 K (Kelvin) = 212,00 °F (Fahrenheit)

유니버설 Windows 플랫폼
8 이후 사용 가능
.NET Framework
1.1 이후 사용 가능
이식 가능한 클래스 라이브러리
이식 가능한 .NET 플랫폼 에서 지원됨
Silverlight
2.0 이후 사용 가능
Windows Phone Silverlight
7.0 이후 사용 가능
Windows Phone
8.1 이후 사용 가능
맨 위로 이동
표시: