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

C#のObject.GetType()メソッドをサンプルコード付きで解説

C#のObject.GetType()メソッドは、現在のインスタンスの正確なランタイム型(Typeオブジェクト)を取得するために使用されます。このメソッドはすべての型が継承するObjectクラスで定義されているため、あらゆるオブジェクトから呼び出すことができます。

構文

GetType()メソッドの構文は以下のとおりです。

public Type GetType ();

引数は受け取らず、戻り値として現在のインスタンスの型を表すTypeオブジェクトを返します。

使用例1:Object型とString型の型情報を取得する

次の例では、Object型のインスタンスとString型の変数に対してGetType()メソッドを呼び出し、それぞれの型情報とハッシュコードを表示しています。

using System;
public class Demo {
   public static void Main() {
      Object ob = new Object();
      String str = "Jim";
      Type type1 = ob.GetType();
      Type type2 = str.GetType();
      Console.WriteLine("Type = "+type1);
      Console.WriteLine("Type = "+type2);
      Console.WriteLine("\nHash Code = "+type1.GetHashCode());
      Console.WriteLine("Hash Code = "+type2.GetHashCode());
   }
}

出力

Type = System.Object
Type = System.String
Hash Code = 30015890
Hash Code = 21083178

このように、GetType()メソッドは呼び出し元の実際の型(System.ObjectやSystem.Stringなど)を返します。なお、表示されるハッシュコードの値は実行環境やセッションによって異なる場合があります。

使用例2:独自定義の構造体でGetType()を使う

次の例では、独自に定義したValue構造体に対してGetHashCode()メソッドをオーバーライドし、さらにGetType()メソッドでその型名を取得しています。

using System;
public struct Value {
   private int v1;
   private int v2;
   private int v3;
   public Value(int v1, int v2, int v3) {
      this.v1 = v1;
      this.v2 = v2;
      this.v3 = v3;
   }
   public override int GetHashCode() {
      return Tuple.Create(v1, v2, v3).GetHashCode();
   }
}
public class Demo {
   public static void Main() {
      Value v = new Value(1, 7, 12);
      Console.WriteLine(v.GetHashCode());
      Console.WriteLine(v.GetType());
      v = new Value(12, 8, 7);
      Console.WriteLine(v.GetHashCode());
      v = new Value(8, 7, 12);
      Console.WriteLine(v.GetHashCode());
   }
}

出力

1258
Value
12803
8931

出力の2行目にある「Value」は、GetType()メソッドによって返された構造体の型名です。このように、ユーザー定義のクラスや構造体に対してもGetType()メソッドを利用すれば、実行時の型情報を簡単に確認できます。

  1. C#のMathF.Asinh()メソッドとは?使い方とサンプルコードをわかりやすく解説

    C#のMathF.Asinh()メソッドは、float型(単精度浮動小数点数)の値に対して、逆双曲線正弦(アークハイパボリックサイン)を計算して返すためのメソッドです。双曲線関数を扱う数学的な処理や、科学技術計算などで活用されます。なお、MathFクラスは.NET Core以降で利用可能なクラスであり、float型に特化した数学メソッドを提供しています。double型を扱う場合は、従来のMath.Asinh()メソッドを使用します。構文MathF.Asinh()メソッドの構文は以下のとおりです。public static float Asinh (float val);引数には逆双曲線正弦を求

  2. C#のMathF.Acosh()メソッドとは?使い方をサンプルコード付きで解説

    C#のMathF.Acosh()メソッドは、指定されたfloat型(単精度浮動小数点数)の値に対する逆双曲線余弦(アークハイパボリックコサイン)を計算して返すメソッドです。構文MathF.Acosh()メソッドの基本的な構文は以下の通りです。public static float Acosh (float val);引数valには、逆双曲線余弦を求めたい浮動小数点数を指定します。戻り値もfloat型で返されます。注意点:1未満の値を指定した場合逆双曲線余弦は数学的に定義域が1以上の値となるため、1未満の値を渡すとNaN(Not a Number)が返されます。サンプルコード1まず、1未満の値を