MSDN Library
콘텐츠의 테이블 축소
콘텐츠의 테이블 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Type.HasElementType 속성

2013-12-13

현재 Type이 다른 형식을 포함하거나 참조하는지 여부, 즉 현재 Type이 배열 또는 포인터이거나 참조로 전달되는지 여부를 나타내는 값을 가져옵니다.

Namespace:  System
어셈블리:  mscorlib(mscorlib.dll)

public bool HasElementType { get; }

속성 값

형식: System.Boolean
Type이 배열 또는 포인터이거나 참조로 전달되면 true이고, 그렇지 않으면 false입니다.

예를 들어, Type.GetType("Int32[]").HasElementType은 true이지만 Type.GetType("Int32").HasElementType은 false입니다. 또한 HasElementType은 "Int32*" 및 "Int32&"에 대해 true입니다.

현재 Type이 제네릭 형식을 나타내거나 제네릭 형식 또는 제네릭 메서드 정의의 형식 매개 변수를 나타내는 경우 이 속성은 항상 false를 반환합니다.

다음 예제에서는 개체가 요소 형식이 있는지 여부에 따라 true 또는 false를 반환합니다. 배열 형식, refout 매개 변수 또는 생성된 ByRef 형식에는 모두 요소 형식이 있습니다.


using System;
using System.Reflection;

public class Example
{
   // This method is for demonstration purposes.
   public void Test(ref int x, out int y)
   {
      y = x = 0;
   }

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // All of the following display 'True'.

      // Define an array, get its type, and display HasElementType. 
      int[] nums = { 1, 1, 2, 3, 5, 8, 13 };
      Type t = nums.GetType();
      outputBlock.Text += String.Format("HasElementType is '{0}' for array types.", t.HasElementType) + "\n";

      // Test an array type without defining an array.
      t = typeof(Example[]);
      outputBlock.Text += String.Format("HasElementType is '{0}' for array types.", t.HasElementType) + "\n";

      // When you use Reflection Emit to emit dynamic methods and
      // assemblies, you can create array types using MakeArrayType.
      // The following creates the type 'array of Example'.
      t = typeof(Example).MakeArrayType();
      outputBlock.Text += String.Format("HasElementType is '{0}' for array types.", t.HasElementType) + "\n";

      // When you reflect over methods, HasElementType is true for
      // ref, out, and pointer parameter types. The following 
      // gets the Test method, defined above, and examines its
      // parameters.
      MethodInfo mi = typeof(Example).GetMethod("Test");
      ParameterInfo[] parms = mi.GetParameters();
      t = parms[0].ParameterType;
      outputBlock.Text += String.Format("HasElementType is '{0}' for ref parameter types.", t.HasElementType) + "\n";
      t = parms[1].ParameterType;
      outputBlock.Text += String.Format("HasElementType is '{0}' for out parameter types.", t.HasElementType) + "\n";

      // When you use Reflection Emit to emit dynamic methods and
      // assemblies, you can create pointer and ByRef types to use
      // when you define method parameters.
      t = typeof(Example).MakePointerType();
      outputBlock.Text += String.Format("HasElementType is '{0}' for pointer types.", t.HasElementType) + "\n";
      t = typeof(Example).MakeByRefType();
      outputBlock.Text += String.Format("HasElementType is '{0}' for ByRef types.", t.HasElementType) + "\n";
   }
}

/* This example produces the following output:

HasElementType is 'True' for array types.
HasElementType is 'True' for array types.
HasElementType is 'True' for array types.
HasElementType is 'True' for ref parameter types.
HasElementType is 'True' for out parameter types.
HasElementType is 'True' for ByRef types.
 */


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시:
© 2016 Microsoft