내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Type.MakeByRefType 메서드

2013-12-13

ref(Visual Basic의 경우 ByRef) 매개 변수로 전달될 때 현재 형식을 나타내는 Type 개체를 반환합니다.

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

public virtual Type MakeByRefType()

반환 값

형식: System.Type
ref 매개 변수(Visual Basic의 경우 ByRef 매개 변수)로 전달될 때 현재 형식을 나타내는 Type 개체입니다.

예외조건
NotSupportedException

호출된 메서드가 기본 클래스에서 지원되지 않는 경우

TypeLoadException

현재 형식이 ByRef 형식인 경우 즉, Type.IsByRef에서 true를 반환하는 경우

MakeByRefType 메서드를 사용하면 매개 변수 목록의 ref 형식(Visual Basic의 경우 ByRef)을 생성할 수 있습니다.

MSIL(Microsoft Intermediate Language)의 구문을 사용할 경우 현재 Type 개체가 Int32를 나타내면 이 메서드는 Int32&를 나타내는 Type 개체를 반환합니다.

버전 메모

Windows Phone

 MakeByRefTypebyref 형식에 대한 MakeByRefType 메서드가 호출될 때 TypeLoadException을 발생합니다.

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

참고참고:

이 예제를 실행하려면 Windows Phone용 정적 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*

 */


Windows Phone OS

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

Windows Phone

표시:
© 2014 Microsoft