Type.MakeByRefType Method
Updated: June 2010
Returns a Type object that represents the current type when passed as a ref parameter (ByRef parameter in Visual Basic).
Namespace: System
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 TypedReference. -or- 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&.
Platform Notes
Silverlight for Windows Phone
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 Use a Demo Method and a TextBlock Control. |
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* */
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.
Date | History | Reason |
|---|---|---|
June 2010 | Added missing TypeLoadException exception. |
Customer feedback. |
Note: