내보내기(0) 인쇄
모두 확장
이 문서는 수동으로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오.
번역
원본

IFormattable 인터페이스

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

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

[ComVisibleAttribute(true)]
public interface IFormattable

IFormattable 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToString지정된 형식을 사용하여 현재 인스턴스 값의 형식을 지정합니다.
위쪽

IFormattable 인터페이스는 형식 문자열과 형식 제공자를 기반으로 개체를 해당 문자열 표현으로 변환합니다.

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

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

형식 공급자는 대체로 개체를 해당 문자열 표현으로 변환하는 데 사용되는 기호를 정의하는 형식 지정 개체를 반환합니다. 예를 들어 숫자를 통화 값으로 변환하는 경우 형식 공급자는 결과 문자열에 표시되는 통화 기호를 정의합니다. .NET Framework에서는 다음 세 가지 형식 공급자를 정의합니다.

또한 고유한 사용자 지정 형식 공급자를 정의하여 형식 지정에 사용되는 문화별, 직업별 또는 산업별 정보를 제공할 수 있습니다. 사용자 지정 형식 공급자를 사용하여 사용자 지정 형식을 구현하는 방법에 대한 자세한 내용은 ICustomFormatter를 참조하십시오.

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

IFormattable 은 기본 데이터 형식으로 구현됩니다.

구현자 참고 사항

문자열 형식 지정 시 Object.ToString보다 더 강력한 제어 기능이 필요한 클래스에서는 IFormattable을 구현해야 합니다.

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

다음 예제에서는 IFormattable 인터페이스를 구현하는 Temperature 클래스를 정의합니다. 이 클래스는 네 가지 형식 지정자를 지원합니다. "G"와 "C"는 온도가 섭씨로 표시됨을 나타내고, "F"는 온도가 화씨로 표시됨을 나타내고, "K"는 온도가 켈빈으로 표시됨을 나타냅니다. 또한 IFormattable.ToString 구현에서 null이거나 비어 있는 형식 문자열을 처리할 수도 있습니다. Temperature 클래스에서 정의된 다른 두 ToString 메서드는 단순히 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 Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Use composite formatting with format string in the format item.
      Temperature temp1 = new Temperature(0);
      outputBlock.Text += String.Format("{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)\n", temp1);

      // Use composite formatting with a format provider.
      temp1 = new Temperature(-40);
      outputBlock.Text += String.Format(CultureInfo.CurrentCulture, "{0:C} (Celsius) = {0:K} (Kelvin) = {0:F} (Fahrenheit)\n", temp1);
      outputBlock.Text += 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);
      outputBlock.Text += String.Format("{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"); 
      outputBlock.Text += String.Format("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)\n", 
                        temp1.ToString("C", current), temp1.ToString("K", current), temp1.ToString("F", current));
      outputBlock.Text += String.Format("{0} (Celsius) = {1} (Kelvin) = {2} (Fahrenheit)\n", 
                        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)


Silverlight

5, 4, 3에서 지원

Windows Phone용 Silverlight

Windows Phone OS 7.1, Windows Phone OS 7.0에서 지원

XNA Framework

Xbox 360, Windows Phone OS 7.0에서 지원

Silverlight에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

추가
Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft