문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문
이 설명서는 보관되지만 유지 되지 않습니다.

ValueType 클래스

업데이트: 2010년 10월

값 형식의 기본 클래스를 제공합니다.

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public abstract class ValueType

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

  이름설명
Protected 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifValueType ValueType 클래스의 새 인스턴스를 초기화합니다.
위쪽

  이름설명
Public 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifEquals이 인스턴스와 지정된 개체가 같은지 여부를 나타냅니다. (Object.Equals(Object)을(를) 재정의함)
Protected 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifFinalize가비지 수집에서 회수하기 전에 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifGetHashCode해당 인스턴스에 대한 해시 코드를 반환합니다. (Object.GetHashCode()을(를) 재정의함)
Public 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifGetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifMemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드XNA Framework에서 지원aey3s293.PortableClassLibrary(ko-kr,VS.100).gifToString이 인스턴스의 정규화된 형식 이름을 반환합니다. (Object.ToString()을(를) 재정의함)

XNA Framework 3.0에서 이 멤버는 ObjectToString()에서 상속되었습니다.


 에서 이 멤버는 ObjectToString()에서 상속되었습니다.
위쪽

ValueType 에서는 값 형식에 보다 적절하게 구현하여 Object에서 가상 메서드를 재정의합니다. 자세한 내용은 ValueType에서 상속한 Enum을 참조하십시오.

데이터 형식은 값 형식과 참조 형식으로 구분됩니다. 값 형식은 스택에 할당되거나 구조체에서 인라인으로 할당됩니다. 참조 형식은 힙에 할당됩니다. 참조 형식과 값 형식은 모두 최상위 기본 클래스 Object에서 파생됩니다. 값 형식이 개체처럼 동작해야 하는 경우, 값 형식을 참조 개체처럼 나타내는 래퍼는 힙에 할당되고 값 형식의 값이 래퍼로 복사됩니다. 래퍼에 값 형식이 들어 있음을 시스템에서 알 수 있도록 래퍼에 표시됩니다. 이 프로세스를 boxing이라고 하며 역프로세스를 unboxing이라고 합니다. boxing과 unboxing을 사용하여 모든 형식이 개체로 처리되도록 할 수 있습니다.

ValueType 구조체는 .NET Framework의 값 형식에 대한 기본 클래스인 것을 제외하고 일반적으로 코드에 직접 사용되지 않습니다. 하지만 메서드 호출에서 매개 변수로 사용하여 모든 개체가 아닌 값 형식으로만 가능한 인수를 제한하거나 메서드에서 다양한 값 형식을 처리할 수 있도록 허용할 수 있습니다. 다음 예제에서는 ValueType이 참조 형식이 메서드에 전달되지 않도록 하는 방법을 보여 줍니다. 네 메서드(인수가 숫자인지 여부를 나타내는 IsNumeric, 인수가 정수인지 여부를 나타내는 IsInteger, 인수가 부동 소수점 숫자인지를 나타내는 IsFloat, 두 숫자 값 사이의 관계를 나타내는 Compare)가 포함된 Utility라는 클래스를 정의합니다. 각각의 경우에서 ValueType 형식의 메서드 매개 변수 및 참조 형식은 메서드로 전달되지 않습니다.


using System;
using System.Numerics;


public class Utility
{
   public enum NumericRelationship {
      GreaterThan = 1, 
      EqualTo = 0,
      LessThan = -1
   };

   public static NumericRelationship Compare(ValueType value1, ValueType value2)
   {
      if (! IsNumeric(value1)) 
         throw new ArgumentException("value1 is not a number.");
      else if (! IsNumeric(value2))
         throw new ArgumentException("value1 is not a number.");

      // Use BigInteger as common integral type
      if (IsInteger(value1) && IsInteger(value2)) {
         BigInteger bigint1 = (BigInteger) value1;
         BigInteger bigint2 = (BigInteger) value2;
         return (NumericRelationship) BigInteger.Compare(bigint1, bigint2);
      }
      // At least one value is floating point; use Double.
      else {
         Double dbl1 = 0;
         Double dbl2 = 0;
         try {
            dbl1 = Convert.ToDouble(value1);
         }
         catch (OverflowException) {
            Console.WriteLine("value1 is outside the range of a Double.");
         }
         try {
            dbl2 = Convert.ToDouble(value2);
         }
         catch (OverflowException) {
            Console.WriteLine("value2 is outside the range of a Double.");
         }
         return (NumericRelationship) dbl1.CompareTo(dbl2);
      }
   }

   public static bool IsInteger(ValueType value)
   {         
      return (value is SByte || value is Int16 || value is Int32 
              || value is Int64 || value is Byte || value is UInt16  
              || value is UInt32 || value is UInt64 
              || value is BigInteger); 
   }

   public static bool IsFloat(ValueType value) 
   {         
      return (value is float | value is double | value is Decimal);
   }

   public static bool IsNumeric(ValueType value)
   {
      if ( ! (value is Byte ||
              value is Int16 ||
              value is Int32 ||
              value is Int64 ||
              value is SByte ||
              value is UInt16 ||
              value is UInt32 ||
              value is UInt64 ||
              value is BigInteger ||
              value is Decimal ||
              value is Double ||
              value is Single))
            return false;
      else
         return true;
   }
}


다음 예제에서는 Utility 클래스의 메서드를 호출하는 방법을 보여 줍니다.


public class Example
{
   public static void Main()
   {
      Console.WriteLine(Utility.IsNumeric(12));
      Console.WriteLine(Utility.IsNumeric(true));
      Console.WriteLine(Utility.IsNumeric('c'));
      Console.WriteLine(Utility.IsNumeric(new DateTime(2012, 1, 1)));
      Console.WriteLine(Utility.IsInteger(12.2));
      Console.WriteLine(Utility.IsInteger(123456789));
      Console.WriteLine(Utility.IsFloat(true));
      Console.WriteLine(Utility.IsFloat(12.2));
      Console.WriteLine(Utility.IsFloat(12));
      Console.WriteLine("{0} {1} {2}", 12.1, Utility.Compare(12.1, 12), 12);
   }
}
// The example displays the following output:
//       True
//       False
//       False
//       False
//       False
//       True
//       False
//       True
//       False
//       12.1 GreaterThan 12


.NET Framework

4, 3.5, 3.0, 2.0, 1.1, 1.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

에서 지원

Windows 7, Windows Vista SP1 이상, Windows XP SP3, Windows XP SP2 x64 버전, Windows Server 2008(Server Core는 지원되지 않음), Windows Server 2008 R2(Server Core는 SP1 이상에서 지원됨), Windows Server 2003 SP2

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

이 형식의 모든 공용 static(Visual Basic의 경우 Shared) 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.

날짜

변경 내용

이유

2010년 10월

예제가 추가되었습니다.

고객 의견

표시: