导出 (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)的方法。

使用 Microsoft 中间语言 (MSIL) 的语法,如果当前 Type 对象表示 Int32,则此方法将返回表示 Int32&Type 对象。

版本说明

Windows Phone

 当为 byref 类型调用了 MakeByRefType 方法时,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

Microsoft 正在进行一项网上调查,以了解您对 MSDN 网站的意见。 如果您选择参加,我们将会在您离开 MSDN 网站时向您显示该网上调查。

是否要参加?
显示:
© 2015 Microsoft