C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のType.GetTypeHandle()メソッドとは?構文と使い方を徹底解説

Type.GetTypeHandle()メソッドの概要

C#におけるType.GetTypeHandle()メソッドは、指定したオブジェクトの型(Type)に対応するランタイム型ハンドル(RuntimeTypeHandle)を取得するための静的メソッドです。取得したハンドルは、対になるType.GetTypeFromHandle()メソッドを使うことで、再び元のTypeオブジェクトへ復元することができます。

構文

このメソッドの基本構文は以下の通りです。

public static RuntimeTypeHandle GetTypeHandle(object ob);

パラメータ

  • ob: 型ハンドルを取得したい対象のオブジェクトを指定します。

戻り値

引数として渡されたオブジェクトの型を表すRuntimeTypeHandleが返されます。

使用例1:System.Type型の場合

まず、typeof(System.Type)で取得したTypeオブジェクトに対して、Type.GetTypeHandle()メソッドを適用してみましょう。

using System;
public class Demo {
    public static void Main(){
        Type type1 = typeof(System.Type);
        RuntimeTypeHandle typeHandle = Type.GetTypeHandle(type1);
        Type type = Type.GetTypeFromHandle(typeHandle);
        Console.WriteLine("Attributes = " + type.Attributes);
        Console.WriteLine("Type Referenced = "+ type);
    }
}

出力

上記のコードを実行すると、次のような結果が出力されます。

Attributes = AutoLayout, AnsiClass, Class, Serializable, BeforeFieldInit
Type Referenced = System.RuntimeType

使用例2:double型の場合

続いて、プリミティブ型であるdouble型を対象に、同じ処理を行うサンプルコードです。

using System;
public class Demo {
    public static void Main(){
        Type type1 = typeof(double);
        RuntimeTypeHandle typeHandle = Type.GetTypeHandle(type1);
        Type type = Type.GetTypeFromHandle(typeHandle);
        Console.WriteLine("Attributes = " + type.Attributes);
        Console.WriteLine("Type Referenced = "+ type);
    }
}

出力

上記のコードを実行すると、次のような結果が出力されます。

Attributes = AutoLayout, AnsiClass, Class, Serializable, BeforeFieldInit
Type Referenced = System.RuntimeType

ポイントまとめ

  • Type.GetTypeHandle()は、オブジェクトからRuntimeTypeHandle(型ハンドル)を取得するメソッド。
  • 取得したハンドルはType.GetTypeFromHandle()で元のTypeオブジェクトに復元できる。
  • リフレクション処理において、型情報を軽量に扱いたい場面で活用されることが多い。
  1. C#のType.GetArrayRank()メソッドの使い方を徹底解説

    C#におけるType.GetArrayRank()メソッドは、配列の次元数(ランク)を取得するためのメソッドです。多次元配列が何次元であるかをプログラム上で確認したい場合に便利な機能です。構文public virtual int GetArrayRank ();このメソッドは、対象の型が配列である場合にその次元数をint型で返します。戻り値の「ランク」とは、配列の角括弧内のカンマの数+1、つまり配列のインデックスの数を表します。使用例1:3次元配列のランクを取得するまずは、3次元のint型配列に対してType.GetArrayRank()メソッドを使用する基本的な例を見てみましょう。using

  2. C#のType.Equals()メソッドとは?使い方とサンプルコードを解説

    C#のType.Equals()メソッドは、現在のTypeインスタンスが表す基盤となるシステム型が、指定されたObjectまたはTypeの基盤となるシステム型と同一であるかどうかを判定します。リフレクション処理などで型同士を比較したい場合に役立つメソッドです。 構文 public virtual bool Equals (Type o); public override bool Equals (object o); パラメータ o:現在のTypeの基盤となるシステム型と比較する対象となるオブジェクトまたは型を指定します。 戻り値 両方の基盤システム型が同じ場合は true、異なる場合は fa