Type.IsByRef プロパティ
Type が参照渡しかどうかを示す値を取得します。
Public ReadOnly Property IsByRef As Boolean
[C#]
public bool IsByRef {get;}
[C++]
public: __property bool get_IsByRef();
[JScript]
public function get IsByRef() : Boolean;
プロパティ値
Type が参照渡しである場合は true 。それ以外の場合は false 。
解説
実際の型を取得するには、参照渡しされた型を逆参照してから、その型に対して GetElementType を呼び出します。
使用例
[Visual Basic, C#, C++] IsByRef プロパティを使用して、指定した型が参照渡しされるかどうかをチェックする例を次に示します。この例では、 HasElementTypeImpl メソッドをオーバーライドした MyTypeDelegator クラスを定義します。メインのクラスは、 HasElementType プロパティをチェックして、要素の型を表示します。
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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard