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

IConvertible 인터페이스

구현하는 참조의 값 또는 값 형식을 같은 값의 공용 언어 런타임 형식으로 변환하는 메서드를 정의합니다.

이 API는 CLS 규격이 아닙니다. 

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

[CLSCompliantAttribute(false)]
[ComVisibleAttribute(true)]
public interface IConvertible

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

  이름설명
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원GetTypeCode이 인스턴스에 대한 TypeCode를 반환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToBoolean지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부울 값으로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToByte지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 없는 8비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToChar지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 유니코드 문자로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToDateTime지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 DateTime으로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToDecimal지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 Decimal 수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToDouble지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 배정밀도 부동 소수점 수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToInt16지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 있는 16비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToInt32지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 있는 32비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToInt64지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 있는 64비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToSByte지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 있는 8비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToSingle지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 단정밀도 부동 소수점 수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToString지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 String으로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToType지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 값이 같은 지정된 TypeObject로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToUInt16지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 없는 16비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToUInt32지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 없는 32비트 정수로 변환합니다.
Public 메서드Windows Phone용 Silverlight에서 지원Xbox 360에서 지원ToUInt64지정된 문화권별 형식 지정 정보를 사용하여 이 인스턴스의 값을 해당하는 부호 없는 64비트 정수로 변환합니다.
위쪽

이 인터페이스는 구현하는 형식 인스턴스의 값을 같은 값의 공용 언어 런타임 형식으로 변환하는 메서드를 제공합니다. 해당 공용 언어 런타임 형식으로는 Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double, Decimal, DateTime, CharString이 있습니다.

공용 언어 런타임 형식으로 의미 있는 변환이 수행되지 않으면 특정 인터페이스 메서드 구현이 InvalidCastException을 throw합니다. 예를 들어, 이 인터페이스가 부울 형식으로 구현된 경우에는 부울 형식에 해당하는 의미 있는 DateTime이 없으므로 ToDateTime 메서드가 예외를 throw합니다.

일반적으로 공용 언어 런타임은 Convert 클래스를 통해 IConvertible 인터페이스를 노출합니다. 또한 공용 언어 런타임은 명시적 인터페이스 구현에서 내부적으로 IConvertible 인터페이스를 사용하여 Convert 클래스와 기본 공용 언어 런타임 형식에서의 변환을 지원하는 데 사용되는 코드를 단순화합니다.

IConvertible 인터페이스 이외에도 .NET Framework에서는 사용자 정의 데이터 형식을 다른 데이터 형식으로 변환하는 사용자 지정 형식 변환기를 정의할 수 있습니다. 형식 변환기는 System.ComponentModel.TypeConverter에서 파생되는 클래스입니다. 이 클래스는 클래스에 System.ComponentModel.TypeConverterAttribute 특성을 적용하여 형식 변환기 역할을 하는 클래스와 연결됩니다.

구현자 참고 사항

IConvertible 인터페이스를 구현하는 경우 Object 매개 변수가 구현 형식의 인스턴스이고 Type 매개 변수가 공용 언어 런타임 형식이면 ChangeType 메서드에서 자동으로 구현이 호출됩니다.

대부분의 IConvertible 메서드에는 IFormatProvider 형식의 매개 변수가 있습니다. 이 매개 변수는 일반적으로 현재 문화권(CultureInfo.CurrentCulture)이나 특정 문화권을 나타냅니다. 대개 기본 형식의 IConvertible 구현에서는 이 매개 변수를 무시합니다. 그러나 코드에서 이 매개 변수의 사용 여부를 선택할 수 있습니다.

다음 예제에서는 복합 숫자 클래스에 대한 IConvertible을 구현하여 먼저 Double로 캐스팅한 다음 Double에서 정적 Convert 멤버를 호출하도록 하는 방법을 보여 줍니다.


using System;

/// Class that implements IConvertible
class Complex : IConvertible
{
   double x;
   double y;

   public Complex(double x, double y)
   {
      this.x = x;
      this.y = y;
   }

   public TypeCode GetTypeCode()
   {
      return TypeCode.Object;
   }

   bool IConvertible.ToBoolean(IFormatProvider provider)
   {
      if ((x != 0.0) || (y != 0.0))
         return true;
      else
         return false;
   }

   double GetDoubleValue()
   {
      return Math.Sqrt(x * x + y * y);
   }

   byte IConvertible.ToByte(IFormatProvider provider)
   {
      return Convert.ToByte(GetDoubleValue());
   }

   char IConvertible.ToChar(IFormatProvider provider)
   {
      return Convert.ToChar(GetDoubleValue());
   }

   DateTime IConvertible.ToDateTime(IFormatProvider provider)
   {
      return Convert.ToDateTime(GetDoubleValue());
   }

   decimal IConvertible.ToDecimal(IFormatProvider provider)
   {
      return Convert.ToDecimal(GetDoubleValue());
   }

   double IConvertible.ToDouble(IFormatProvider provider)
   {
      return GetDoubleValue();
   }

   short IConvertible.ToInt16(IFormatProvider provider)
   {
      return Convert.ToInt16(GetDoubleValue());
   }

   int IConvertible.ToInt32(IFormatProvider provider)
   {
      return Convert.ToInt32(GetDoubleValue());
   }

   long IConvertible.ToInt64(IFormatProvider provider)
   {
      return Convert.ToInt64(GetDoubleValue());
   }

   sbyte IConvertible.ToSByte(IFormatProvider provider)
   {
      return Convert.ToSByte(GetDoubleValue());
   }

   float IConvertible.ToSingle(IFormatProvider provider)
   {
      return Convert.ToSingle(GetDoubleValue());
   }

   string IConvertible.ToString(IFormatProvider provider)
   {
      return "( " + x.ToString() + " , " + y.ToString() + " )";
   }

   object IConvertible.ToType(Type conversionType, IFormatProvider provider)
   {
      return Convert.ChangeType(GetDoubleValue(), conversionType, provider);
   }

   ushort IConvertible.ToUInt16(IFormatProvider provider)
   {
      return Convert.ToUInt16(GetDoubleValue());
   }

   uint IConvertible.ToUInt32(IFormatProvider provider)
   {
      return Convert.ToUInt32(GetDoubleValue());
   }

   ulong IConvertible.ToUInt64(IFormatProvider provider)
   {
      return Convert.ToUInt64(GetDoubleValue());
   }

}

/// <summary>
/// Summary description for Class1.
/// </summary>
class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      Complex testComplex = new Complex(4, 7);

      WriteObjectInfo(outputBlock, testComplex);
      WriteObjectInfo(outputBlock, Convert.ToBoolean(testComplex));
      WriteObjectInfo(outputBlock, Convert.ToDecimal(testComplex));
      WriteObjectInfo(outputBlock, Convert.ToString(testComplex));

   }

   static void WriteObjectInfo(System.Windows.Controls.TextBlock outputBlock, object testObject)
   {
      TypeCode typeCode = Type.GetTypeCode(testObject.GetType());

      switch (typeCode)
      {
         case TypeCode.Boolean:
            outputBlock.Text += String.Format("Boolean: {0}", testObject) + "\n";
            break;

         case TypeCode.Double:
            outputBlock.Text += String.Format("Double: {0}", testObject) + "\n";
            break;

         default:
            outputBlock.Text += String.Format("{0}: {1}", typeCode.ToString(), testObject) + "\n";
            break;
      }
   }
}


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에서 지원되는 운영 체제 및 브라우저에 대한 자세한 내용은 지원되는 운영 체제 및 브라우저을 참조하십시오.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft