MakePointerType Method

Type.MakePointerType Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Returns a Type object that represents a pointer to the current type.

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

'Declaration
Public Overridable Function MakePointerType As Type

Return Value

Type: System.Type
A Type object that represents a pointer to the current type.

ExceptionCondition
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 MakePointerType method provides a way to generate pointer types for parameter lists.

Using the syntax of Microsoft intermediate language (MSIL), if the current Type object represents Int32, this method returns a Type object representing Int32*.

The following code example creates array, ref (ByRef in Visual Basic), and pointer types for the Test class.


Imports System.Reflection

Public Class Example
   Public Shared Sub Demo(ByVal outputBlock As System.Windows.Controls.TextBlock)
      ' Create a Type object that represents a one-dimensional
      ' array of Example objects.
      Dim t As Type = GetType(Example).MakeArrayType()
      outputBlock.Text &= vbCrLf & "Array of Example: " & t.ToString() & vbCrLf

      ' Create a Type object that represents a two-dimensional
      ' array of Example objects.
      t = GetType(Example).MakeArrayType(2)
      outputBlock.Text &= vbCrLf & "Two-dimensional array of Example: " & t.ToString() & vbCrLf

      ' Demonstrate an exception when an invalid array rank is
      ' specified.
      Try
         t = GetType(Example).MakeArrayType(-1)
      Catch ex As Exception
         outputBlock.Text &= vbCrLf & ex.ToString() & vbCrLf
      End Try

      ' Create a Type object that represents a ByRef parameter
      ' of type Example.
      t = GetType(Example).MakeByRefType()
      outputBlock.Text &= vbCrLf & "ByRef Example: " & t.ToString() & vbCrLf

      ' 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.
      Dim t2 As Type = GetType(Example)
      Dim mi As MethodInfo = t2.GetMethod("Test")
      Dim pi As ParameterInfo = mi.GetParameters()(0)
      Dim pt As Type = pi.ParameterType
      outputBlock.Text &= "Are the ByRef types equal? " & (t Is pt) & vbCrLf

      ' Create a Type object that represents a pointer to an
      ' Example object.
      t = GetType(Example).MakePointerType()
      outputBlock.Text &= vbCrLf & "Pointer to Example: " & t.ToString() & vbCrLf
   End Sub

   ' A sample method with a ByRef parameter.
   '
   Public Sub Test(ByRef e As Example)
   End Sub
End Class

' This example produces output similar to the following:
'
'Array of Example: SilverlightApplication.Example[]
'
'Two-dimensional array of Example: SilverlightApplication.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 SilverlightApplication.Example.Demo(TextBlock outputBlock)
'
'ByRef Example: SilverlightApplication.Example&
'Are the ByRef types equal? True
'
'Pointer to Example: SilverlightApplication.Example*


Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2017 Microsoft