(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren

Type.MakeByRefType-Methode

Hinweis: Diese Methode ist neu in .NET Framework, Version 2.0.

Gibt ein Type-Objekt zurück, das beim Übergeben als ref-Parameter (ByRef-Parameter in Visual Basic) den aktuellen Typ darstellt.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

public virtual Type MakeByRefType ()
public Type MakeByRefType ()
public function MakeByRefType () : Type

Rückgabewert

Ein Type-Objekt, das beim Übergeben als ref-Parameter (ByRef-Parameter in Visual Basic) den aktuellen Typ darstellt.

Die MakeByRefType-Methode bietet eine Möglichkeit zum Generieren von ref-Typen (ByRef in Visual Basic) für Parameterlisten.

Mithilfe der MSIL (Microsoft Intermediate Language)-Syntax gibt diese Methode ein Type-Objekt zurück, das Int32& darstellt, sofern das aktuelle Type-Objekt Int32 darstellt.

Im folgenden Codebeispiel werden Array-, ref- (ByRef in Visual Basic) und Zeigertypen für die Test-Klasse erstellt.

using System;
using System.Reflection;

public class Example
{
    public static void Main()
    {
        // Create a Type object that represents a one-dimensional
        // array of Example objects.
        Type t = typeof(Example).MakeArrayType();
        Console.WriteLine("\r\nArray of Example: {0}", t);

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

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

        // Create a Type object that represents a ByRef parameter
        // of type Example.
        t = typeof(Example).MakeByRefType();
        Console.WriteLine("\r\nByRef Example: {0}", 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;
        Console.WriteLine("Are the ByRef types equal? {0}", (t == pt));

        // Create a Type object that represents a pointer to an
        // Example object.
        t = typeof(Example).MakePointerType();
        Console.WriteLine("\r\nPointer to Example: {0}", 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.Main()

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

Pointer to Example: Example*

 */

import System.*;
import System.Reflection.*;

public class Example
{
    public static void main(String[] args)
    {
        // Create a Type object that represents a one-dimensional
        // array of Example objects.
        Type t = Example.class.ToType().MakeArrayType();
        Console.WriteLine("\r\nArray of Example: {0}", t);
        // Create a Type object that represents a two-dimensional
        // array of Example objects.
        t = Example.class.ToType().MakeArrayType(2);
        Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t);
        // Demonstrate an exception when an invalid array rank is
        // specified.
        try {
            t = Example.class.ToType().MakeArrayType(-1);
        }
        catch (System.Exception ex) {
            Console.WriteLine("\r\n{0}", ex);
        }
        // Create a Type object that represents a ByRef parameter
        // of type Example.
        t = Example.class.ToType().MakeByRefType();
        Console.WriteLine("\r\nByRef Example: {0}", 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 = Example.class.ToType();
        MethodInfo mi = t2.GetMethod("Test");
        ParameterInfo pi = mi.GetParameters()[0];
        Type pt = pi.get_ParameterType();
        Console.WriteLine("Are the ByRef types equal? {0}", new 
            Boolean(t == pt));
        // Create a Type object that represents a pointer to an
        // Example object.
        t = Example.class.ToType().MakePointerType();
        Console.WriteLine("\r\nPointer to Example: {0}", t);
    } //main

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

/* 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.jsl:line 2999
   at Example.main()

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

Pointer to Example: Example*

 */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2014 Microsoft