次の方法で共有


Type.IsValueTypeImpl メソッド

IsValueType プロパティを実装し、 Type が値型であり、クラスやインターフェイスでないかどうかを判断します。

Protected Overridable Function IsValueTypeImpl() As Boolean
[C#]
protected virtual bool IsValueTypeImpl();
[C++]
protected: virtual bool IsValueTypeImpl();
[JScript]
protected function IsValueTypeImpl() : Boolean;

戻り値

Type が値型である場合は true 。それ以外の場合は false

解説

値型とは、ビットの連続で表される値のことです。値型は、クラスやインターフェイスではありません。この値型は、一部のプログラミング言語では "構造体" と呼ばれます。列挙型 (Enum) は値型の 1 つです。

使用例

 

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(myType As Type)
      MyBase.New(myType)
      Me.myType = myType
   End Sub 'New
   
   ' Override the IsValueTypeImpl() method of the Type class.
   Protected Overrides Function IsValueTypeImpl() As Boolean
      ' Determine whether the type is a value type.
      If myType.IsValueType Then
         myElementType = "value"
         Return True
      End If
      ' The type is not a value type.
      Return False
   End Function 'IsValueTypeImpl
End Class 'MyTypeDelegator

Public Class Type_IsValueTypeImpl

   Public Class MyClass1
   End Class 'MyClass1
   
   Public Shared Sub Main()
      Try
         Dim myInt As Integer = 0
         Dim myClass1 As New MyClass1()
         
         Dim myType As New MyTypeDelegator(myInt.GetType())
         Console.WriteLine(ControlChars.NewLine + "Determine whether a variable refers to a value type." + ControlChars.NewLine)
         
         ' Determine whether 'myType' is a value type.  
         If myType.IsValueType Then
            Console.WriteLine(ControlChars.NewLine + "'myInt' is a {0} type.", myType.myElementType)
         Else
            Console.WriteLine(ControlChars.NewLine + "'myInt' is not a value type.")
         End If 
         myType = New MyTypeDelegator(myClass1.GetType())
         
         ' Determine whether 'myType' is a value type.  
         If myType.IsValueType Then
            Console.WriteLine(ControlChars.NewLine + "'myClass1' is a {0} type.", myType.myElementType)
         Else
            Console.WriteLine(ControlChars.NewLine + "'myClass1' is not a value type.")
         End If 
      Catch e As Exception
         Console.WriteLine(ControlChars.NewLine + "The following exception is raised:" + e.Message.ToString())
      End Try
   End Sub 'Main
End Class 'Type_IsValueTypeImpl

[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 'IsValueTypeImpl()' method of 'Type' class.
   protected override bool IsValueTypeImpl()
   {
      // Determine whether the type is a value type.
      if(myType.IsValueType)
      {
         myElementType = "value";
         return true;
      }
      // The type is not value type.
      return false;
   }  
}
public class Type_IsValueTypeImpl 
{
   public class MyClass
   {
   }
   public static void Main()
   {
      try
      {
         int myInt = 0 ; 
         MyClass myClass = new MyClass ();

         MyTypeDelegator myType = new MyTypeDelegator(myInt.GetType());
         Console.WriteLine("\nCheck whether a variable refers to a value type.\n");
         
         // Determine whether 'myType' is a value type.  
         if( myType.IsValueType)
            Console.WriteLine("\n'myInt' is a {0} type.", myType.myElementType);
         else
            Console.WriteLine("\n'myInt' is not a value type.");

         myType = new MyTypeDelegator(myClass.GetType());

         // Determine whether 'myType' is a value type.  
         if( myType.IsValueType)
            Console.WriteLine("\n'myClass' is a {0} type.", myType.myElementType);
         else
            Console.WriteLine("\n'myClass' is not a value type.");

      }
      catch( Exception e )
      {
            Console.WriteLine("\nThe following exception is raised:" +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 'IsValueTypeImpl()' method of 'Type' class.
protected:
   bool IsValueTypeImpl() {
      // Determine whether the type is a value type.
      if (myType->IsValueType) {
         myElementType = S"value";
         return true;
      }
      // The type is not value type.
      return false;
   }
};

public __gc class MyClass {
};
int main() {
   try {
      int myInt = 0 ;
      MyClass* myClass = new MyClass ();

      MyTypeDelegator* myType = new MyTypeDelegator( __box(myInt)->GetType());
      Console::WriteLine(S"\nCheck whether a variable refers to a value type.\n");

      // Determine whether 'myType' is a value type.
      if (myType->IsValueType)
         Console::WriteLine(S"\n'myInt' is a {0} type.", myType->myElementType);
      else
         Console::WriteLine(S"\n'myInt' is not a value type.");
      myType = new MyTypeDelegator(myClass->GetType());

      // Determine whether 'myType' is a value type.
      if (myType->IsValueType)
         Console::WriteLine(S"\n'myClass' is a {0} type.", myType->myElementType);
      else
         Console::WriteLine(S"\n'myClass' is not a value type.");

   } catch (Exception* e) {
      Console::WriteLine(S"\nThe following exception is raised: {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

参照

Type クラス | Type メンバ | System 名前空間 | TypeAttributes | IsClass | IsInterface | ValueType | IsValueType