Type.HasElementType プロパティ
現在の Type が別の型を包含または参照しているかどうか、つまり現在の Type が配列、ポインタ、または参照渡しかどうかを示す値を取得します。
Public ReadOnly Property HasElementType As Boolean
[C#]
public bool HasElementType {get;}
[C++]
public: __property bool get_HasElementType();
[JScript]
public function get HasElementType() : Boolean;
プロパティ値
Type が配列やポインタであるか、参照渡しである場合は true 。それ以外の場合は false 。
解説
たとえば、Type.GetType("Int32[]").HasElementType は true を返しますが、Type.GetType("Int32").HasElementType は false を返します。HasElementType は、"Int32*" と "Int32&" のどちらに対しても true を返します。
使用例
[Visual Basic, C#, C++] オブジェクトが配列、参照型、またはポインタかどうかに応じて、 true または false を返す例を次に示します。
Imports System
Imports Microsoft.VisualBasic
Public Class [MyClass]
End Class '[MyClass]
Public Class Type_HasElementType
Public Shared Sub Main()
Try
' Define a nonarray, pointer, or reference element.
Dim myObject1 As New [MyClass]()
Dim myObject2 As [Object] = myObject1
' An object of array type.
Dim myObject3(4) As [MyClass]
Dim myObject4 As [Object] = myObject3
Dim myObjects() As [Object] = {myObject1, myObject2, myObject3, myObject4}
Console.WriteLine(ControlChars.NewLine + "Check whether the object is an array, pointer, or reference type." + ControlChars.NewLine)
Dim i As Integer
For i = 0 To myObjects.Length - 1
If myObjects(i).GetType().HasElementType Then
Console.WriteLine("myObject{0} is an array, pointer, or reference type.", i.ToString())
Else
Console.WriteLine("myObject{0} is not an array, pointer, or reference type.", i.ToString())
End If
Next i
Catch e As Exception
Console.WriteLine("Exception: {0} " + ControlChars.Cr, e.Message.ToString())
End Try
End Sub 'Main
End Class 'Type_HasElementType
[C#]
using System;
public class MyClass
{
}
public class Type_HasElementType
{
public static void Main()
{
try
{
// A nonarray, pointer, or reference element.
MyClass myObject1 = new MyClass();
Object myObject2 = myObject1 ;
// Define an array.
MyClass[] myObject3 = new MyClass[5];
Object myObject4 = myObject3 ;
Object[] myObjects = new Object[] { myObject1, myObject2, myObject3, myObject4 };
Console.WriteLine("\nCheck whether the object is an array, a pointer, or a reference type.\n");
for(int i = 0; i < myObjects.Length; i++)
{
if(myObjects[i].GetType().HasElementType)
Console.WriteLine("myObject{0} is an array, pointer, or reference type.", i);
else
Console.WriteLine("myObject{0} is not an array, pointer, or reference type.", i);
}
}
catch( Exception e )
{
Console.WriteLine( "Exception: {0} \n", e.Message ) ;
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
public __gc class MyClass {
};
int main() {
try {
// A nonarray, pointer, or reference element.
MyClass* myObject1 = new MyClass();
Object* myObject2 = myObject1 ;
// Define an array.
MyClass* myObject3[] = new MyClass*[5];
Object* myObject4 = myObject3 ;
Object* myObjects[] ={ myObject1, myObject2, myObject3, myObject4 };
Console::WriteLine(S"\nCheck whether the object is an array, a pointer, or a reference type.\n");
for (int i = 0; i < myObjects->Length; i++) {
if (myObjects->Item[i]->GetType()->HasElementType)
Console::WriteLine(S"myObject{0} is an array, pointer, or reference type.", __box(i));
else
Console::WriteLine(S"myObject{0} is not an array, pointer, or reference type.", __box(i));
}
} catch (Exception* e) {
Console::WriteLine(S"Exception: {0} \n", 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
参照
Type クラス | Type メンバ | System 名前空間 | HasElementTypeImpl | IsArray | IsPointer | IsByRef | GetElementType | GetType