Type.MakeByRefType メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As Type Dim returnValue As Type returnValue = instance.MakeByRefType
ref パラメータ (Visual Basic の場合は ByRef) として渡されるときに現在の型を表す Type オブジェクト。

MakeByRefType メソッドは、パラメータ リストの ref 型 (Visual Basic の場合は ByRef) を生成する手段を提供します。
MSIL (Microsoft Intermediate Language) の構文を使用すると、現在の Type オブジェクトが Int32 を表す場合、このメソッドは Int32& を表す Type オブジェクトを返します。

Test クラスの配列、ref (Visual Basic の場合は ByRef)、およびポインタ型を作成するコード例を次に示します。
Imports System Imports System.Reflection Imports Microsoft.VisualBasic Public Class Example Public Shared Sub Main() ' Create a Type object that represents a one-dimensional ' array of Example objects. Dim t As Type = GetType(Example).MakeArrayType() Console.WriteLine(vbCrLf & "Array of Example: " & t.ToString()) ' Create a Type object that represents a two-dimensional ' array of Example objects. t = GetType(Example).MakeArrayType(2) Console.WriteLine(vbCrLf & "Two-dimensional array of Example: " & t.ToString()) ' Demonstrate an exception when an invalid array rank is ' specified. Try t = GetType(Example).MakeArrayType(-1) Catch ex As Exception Console.WriteLine(vbCrLf & ex.ToString()) End Try ' Create a Type object that represents a ByRef parameter ' of type Example. t = GetType(Example).MakeByRefType() Console.WriteLine(vbCrLf & "ByRef Example: " & t.ToString()) ' 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 Console.WriteLine("Are the ByRef types equal? " & (t Is pt)) ' Create a Type object that represents a pointer to an ' Example object. t = GetType(Example).MakePointerType() Console.WriteLine(vbCrLf & "Pointer to Example: " & t.ToString()) 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: 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.Main() ' 'ByRef Example: Example& 'Are the ByRef types equal? True ' 'Pointer to Example: Example*
using System; using System.Reflection; public class Example { public static void Main() { // Create a Type object that represents a one-dimensional // array of Example objects. Type t = typeof(Example).MakeArrayType(); Console.WriteLine("\r\nArray of Example: {0}", t); // Create a Type object that represents a two-dimensional // array of Example objects. t = typeof(Example).MakeArrayType(2); Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t); // Demonstrate an exception when an invalid array rank is // specified. try { t = typeof(Example).MakeArrayType(-1); } catch(Exception ex) { Console.WriteLine("\r\n{0}", ex); } // Create a Type object that represents a ByRef parameter // of type Example. t = typeof(Example).MakeByRefType(); Console.WriteLine("\r\nByRef Example: {0}", 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; Console.WriteLine("Are the ByRef types equal? {0}", (t == pt)); // Create a Type object that represents a pointer to an // Example object. t = typeof(Example).MakePointerType(); Console.WriteLine("\r\nPointer to Example: {0}", 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.Main() ByRef Example: Example& Are the ByRef types equal? True Pointer to Example: Example* */
using namespace System; using namespace System::Reflection; public ref class Example { public: static void Main() { // Create a Type object that represents a one-dimensional // array of Example objects. Type^ t = Example::typeid->MakeArrayType(); Console::WriteLine( L"\r\nArray of Example: {0}", t ); // Create a Type object that represents a two-dimensional // array of Example objects. t = Example::typeid->MakeArrayType( 2 ); Console::WriteLine( L"\r\nTwo-dimensional array of Example: {0}", t ); // Demonstrate an exception when an invalid array rank is // specified. try { t = Example::typeid->MakeArrayType( -1 ); } catch ( Exception^ ex ) { Console::WriteLine( L"\r\n{0}", ex ); } // Create a Type object that represents a ByRef parameter // of type Example. t = Example::typeid->MakeByRefType(); Console::WriteLine( L"\r\nByRef Example: {0}", 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 = Example::typeid; MethodInfo^ mi = t2->GetMethod( L"Test" ); ParameterInfo^ pi = mi->GetParameters()[ 0 ]; Type^ pt = pi->ParameterType; Console::WriteLine( L"Are the ByRef types equal? {0}", (t == pt) ); // Create a Type object that represents a pointer to an // Example object. t = Example::typeid->MakePointerType(); Console::WriteLine( L"\r\nPointer to Example: {0}", t ); } // A sample method with a ByRef parameter. // void Test( interior_ptr<Example^> /*e*/ ) { } }; int main() { Example::Main(); } /* 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.Main() ByRef Example: Example& Are the ByRef types equal? True Pointer to Example: Example* */
import System.*; import System.Reflection.*; public class Example { public static void main(String[] args) { // Create a Type object that represents a one-dimensional // array of Example objects. Type t = Example.class.ToType().MakeArrayType(); Console.WriteLine("\r\nArray of Example: {0}", t); // Create a Type object that represents a two-dimensional // array of Example objects. t = Example.class.ToType().MakeArrayType(2); Console.WriteLine("\r\nTwo-dimensional array of Example: {0}", t); // Demonstrate an exception when an invalid array rank is // specified. try { t = Example.class.ToType().MakeArrayType(-1); } catch (System.Exception ex) { Console.WriteLine("\r\n{0}", ex); } // Create a Type object that represents a ByRef parameter // of type Example. t = Example.class.ToType().MakeByRefType(); Console.WriteLine("\r\nByRef Example: {0}", 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 = Example.class.ToType(); MethodInfo mi = t2.GetMethod("Test"); ParameterInfo pi = mi.GetParameters()[0]; Type pt = pi.get_ParameterType(); Console.WriteLine("Are the ByRef types equal? {0}", new Boolean(t == pt)); // Create a Type object that represents a pointer to an // Example object. t = Example.class.ToType().MakePointerType(); Console.WriteLine("\r\nPointer to Example: {0}", t); } //main // A sample method with a ByRef parameter. // public void Test(Example e) { } //Test } //Example /* 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.jsl:line 2999 at Example.main() ByRef Example: Example& Are the ByRef types equal? false Pointer to Example: Example* */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からType.MakeByRefType メソッドを検索する場合は、下記のリンクをクリックしてください。

- Type.MakeByRefType メソッドのページへのリンク