次の方法で共有


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