Type.MakeByRefType 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 the current type when passed as a ref parameter (ByRef parameter in Visual Basic).
Assembly: mscorlib (in mscorlib.dll)
Return Value
Type: System.TypeA Type object that represents the current type when passed as a ref parameter (ByRef parameter in Visual Basic).
| 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 MakeByRefType method provides a way to generate ref types (ByRef in Visual Basic) 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&.
Version Notes
Windows Phone
MakeByRefType does not throw TypeLoadException when the MakeByRefType method for a byref type is called.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 8. |
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*
Note: