Type.IsByRef Property
Gets a value indicating whether the Type is passed by reference.
[Visual Basic] Public ReadOnly Property IsByRef As Boolean [C#] public bool IsByRef {get;} [C++] public: __property bool get_IsByRef(); [JScript] public function get IsByRef() : Boolean;
Property Value
true if the Type is passed by reference; otherwise, false.
Remarks
To get to the actual type, dereference the type that was passed by reference, and then call GetElementType on that type.
Example
[Visual Basic, C#, C++] The following example demonstrates a use of the IsByRef property to check whether a specified type is passed by reference. The example defines the class MyTypeDelegator, which overrides the HasElementTypeImpl method. The main class checks for the HasElementType property and displays the element type.
[Visual Basic] Imports System Imports System.Reflection Imports Microsoft.VisualBasic Public Class MyTypeDelegator Inherits TypeDelegator Public myElementType As String = Nothing Private myType As Type = Nothing Public Sub New(ByVal myType As Type) MyBase.New(myType) Me.myType = myType End Sub 'New ' Override Type.HasElementTypeImpl(). Protected Overrides Function HasElementTypeImpl() As Boolean ' Determine whether the type is an array. If myType.IsArray Then myElementType = "array" Return True End If ' Determine whether the type is a reference. If myType.IsByRef Then myElementType = "reference" Return True End If ' Determine whether the type is a pointer. If myType.IsPointer Then myElementType = "pointer" Return True End If ' The type is not a reference, array, or pointer type. Return False End Function 'HasElementTypeImpl End Class 'MyTypeDelegator Public Class Type_HasElementTypeImpl Public Shared Sub Main() Try Dim myInt As Integer = 0 Dim myArray(4) As Integer Dim myType As New MyTypeDelegator(myArray.GetType()) Console.WriteLine(ControlChars.NewLine + "Determine whether a variable refers to an array or pointer or reference type." + ControlChars.NewLine) ' Determine whether myType is an array, pointer, reference type. If myType.HasElementType Then Console.WriteLine("The type of myArray is {0}.", myType.myElementType.ToString()) Else Console.WriteLine("myArray is not an array, pointer, or reference type.") End If myType = New MyTypeDelegator(myInt.GetType()) ' Determine whether myType is an array, pointer, reference type. If myType.HasElementType Then Console.WriteLine("The type of myInt is {0}.", myType.myElementType.ToString()) Else Console.WriteLine("myInt is not an array, pointer, or reference type.") End If Catch e As Exception Console.WriteLine("Exception: {0}", e.Message.ToString()) End Try End Sub 'Main End Class 'Type_HasElementTypeImpl [C#] using System; using System.Reflection; public class MyTypeDelegator : TypeDelegator { public string myElementType = null; private Type myType = null ; public MyTypeDelegator(Type myType) : base(myType) { this.myType = myType; } // Override Type.HasElementTypeImpl(). protected override bool HasElementTypeImpl() { // Determine whether the type is an array. if(myType.IsArray) { myElementType = "array"; return true; } // Determine whether the type is a reference. if(myType.IsByRef) { myElementType = "reference"; return true; } // Determine whether the type is a pointer. if(myType.IsPointer) { myElementType = "pointer"; return true; } // Return false if the type is not a reference, array, or pointer type. return false; } } public class Type_HasElementTypeImpl { public static void Main() { try { int myInt = 0 ; int[] myArray = new int[5]; MyTypeDelegator myType = new MyTypeDelegator(myArray.GetType()); // Determine whether myType is an array, pointer, reference type. Console.WriteLine("\nDetermine whether a variable is an array, pointer, or reference type.\n"); if( myType.HasElementType) Console.WriteLine("The type of myArray is {0}.", myType.myElementType); else Console.WriteLine("myArray is not an array, pointer, or reference type."); myType = new MyTypeDelegator(myInt.GetType()); // Determine whether myType is an array, pointer, reference type. if( myType.HasElementType) Console.WriteLine("The type of myInt is {0}.", myType.myElementType); else Console.WriteLine("myInt is not an array, pointer, or reference type."); } catch( Exception e ) { Console.WriteLine("Exception: {0}", e.Message); } } } [C++] #using <mscorlib.dll> using namespace System; using namespace System::Reflection; public __gc class MyTypeDelegator : public TypeDelegator { public: String* myElementType; private: Type* myType; public: MyTypeDelegator(Type* myType) : TypeDelegator(myType) { this->myType = myType; } // Override Type::HasElementTypeImpl(). protected: bool HasElementTypeImpl() { // Determine whether the type is an array. if (myType->IsArray) { myElementType = S"array"; return true; } // Determine whether the type is a reference. if (myType->IsByRef) { myElementType = S"reference"; return true; } // Determine whether the type is a pointer. if (myType->IsPointer) { myElementType = S"pointer"; return true; } // Return false if the type is not a reference, array, or pointer type. return false; } }; int main() { try { int myInt = 0 ; Int32 myArray[] = new Int32[5]; MyTypeDelegator* myType = new MyTypeDelegator(myArray->GetType()); // Determine whether myType is an array, pointer, reference type. Console::WriteLine(S"\nDetermine whether a variable is an array, pointer, or reference type.\n"); if (myType->HasElementType) Console::WriteLine(S"The type of myArray is {0}.", myType->myElementType); else Console::WriteLine(S"myArray is not an array, pointer, or reference type."); myType = new MyTypeDelegator(__box(myInt)->GetType()); // Determine whether myType is an array, pointer, reference type. if (myType->HasElementType) Console::WriteLine(S"The type of myInt is {0}.", myType->myElementType); else Console::WriteLine(S"myInt is not an array, pointer, or reference type."); } catch (Exception* e) { Console::WriteLine(S"Exception: {0}", e->Message); } }
[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard