Type.MakePointerType Method

Updated: June 2010

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

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

Public Overridable Function MakePointerType As Type

Return Value

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


The invoked method is not supported in the base class.


The current type is TypedReference.


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.
         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*


Supported in: 5, 4, 3

Silverlight for Windows Phone

Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0

XNA Framework

Supported in: Xbox 360, Windows Phone OS 7.0

For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.




June 2010

Added missing TypeLoadException exception.

Customer feedback.

Community Additions