EN
Ce contenu n’est pas disponible dans votre langue. Voici la version anglaise.
Type.MakePointerType Method
May 02, 2013
Returns a Type object that represents a pointer to the current type.
Assembly: mscorlib (in mscorlib.dll)
| Exception | Condition |
|---|---|
| NotSupportedException | The invoked method is not supported in the base class. |
| TypeLoadException | The current type is a ByRef type. That is, Type.IsByRef returns true. |
The following code example creates array, ref (ByRef in Visual Basic), and pointer types for the Test class.
Note: |
|---|
To run this example, see Building examples that have static TextBlock controls for Windows Phone. |
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* */
Note: