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

Type.MakeArrayType 메서드

업데이트: 2010년 6월

하한이 0인 현재 형식의 1차원 배열을 나타내는 Type 개체를 반환합니다.

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

public virtual Type MakeArrayType()

반환 값

형식: System.Type
하한이 0인 현재 형식의 1차원 배열을 나타내는 Type 개체입니다.

예외상황
NotSupportedException

호출된 메서드가 기본 클래스에서 지원되지 않는 경우 파생 클래스에서 구현해야 합니다.

TypeLoadException

현재 형식이 TypedReference인 경우

- 또는 -

현재 형식이 ByRef 형식인 경우. 즉, Type.IsByReftrue를 반환하는 경우.

MakeArrayType 메서드를 사용하면 요소 형식이 런타임에 계산되는 배열 형식을 생성할 수 있습니다.

참고 공용 언어 런타임에서는 벡터(항상 0부터 시작하는 인덱스를 갖는 1차원 배열)와 다차원 배열을 구별합니다. 항상 1차원인 벡터는 1차원만 있는 다차원 배열과 다릅니다. 이 메서드 오버로드는 벡터 형식을 만드는 경우에만 사용할 수 있으며 벡터 형식을 만드는 유일한 방법입니다. 다차원 배열 형식을 만들려면 MakeArrayType(Int32) 메서드 오버로드를 사용합니다.

다음 코드 예제에서는 Test 클래스에 대한 배열, ref(Visual Basic의 경우 ByRef) 및 포인터 형식을 만듭니다.

참고참고:

이 예제를 실행하려면 Demo 메서드 및 TextBlock 컨트롤을 사용하는 예제 빌드를 참조하십시오.


using System;
using System.Reflection;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Create a Type object that represents a one-dimensional
      // array of Example objects.
      Type t = typeof(Example).MakeArrayType();
      outputBlock.Text += String.Format("\r\nArray of Example: {0}\n", t);

      // Create a Type object that represents a two-dimensional
      // array of Example objects.
      t = typeof(Example).MakeArrayType(2);
      outputBlock.Text += String.Format("\r\nTwo-dimensional array of Example: {0}\n", t);

      // Demonstrate an exception when an invalid array rank is
      // specified.
      try
      {
         t = typeof(Example).MakeArrayType(-1);
      }
      catch (Exception ex)
      {
         outputBlock.Text += String.Format("\r\n{0}\n", ex);
      }

      // Create a Type object that represents a ByRef parameter
      // of type Example.
      t = typeof(Example).MakeByRefType();
      outputBlock.Text += String.Format("\r\nByRef Example: {0}\n", t);

      // Get a Type object representing the Example class, a
      // MethodInfo representing the "Test" method, a ParameterInfo
      // representing the parameter of type Example, and finally
      // a Type object representing the type of this ByRef parameter.
      // Compare this Type object with the Type object created using
      // MakeByRefType.
      Type t2 = typeof(Example);
      MethodInfo mi = t2.GetMethod("Test");
      ParameterInfo pi = mi.GetParameters()[0];
      Type pt = pi.ParameterType;
      outputBlock.Text += String.Format("Are the ByRef types equal? {0}\n", (t == pt));

      // Create a Type object that represents a pointer to an
      // Example object.
      t = typeof(Example).MakePointerType();
      outputBlock.Text += String.Format("\r\nPointer to Example: {0}\n", t);
   }

   // A sample method with a ByRef parameter.
   //
   public void Test(ref Example e)
   {
   }
}

/* This example produces output similar to the following:

Array of Example: Example[]

Two-dimensional array of Example: Example[,]

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at System.RuntimeType.MakeArrayType(Int32 rank) in c:\vbl\ndp\clr\src\BCL\System\RtType.cs:line 2999
   at Example.Demo(TextBlock outputBlock)

ByRef Example: Example&
Are the ByRef types equal? True

Pointer to Example: Example*

 */


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

날짜

기록

이유

2010년 6월

누락된 TypeLoadException 예외가 추가되었습니다.

고객 의견

커뮤니티 추가 항목

추가
표시: