C#のType.Equals()メソッドとは?使い方とサンプルコードを解説
C#のType.Equals()メソッドは、現在のTypeインスタンスが表す基盤となるシステム型が、指定されたObjectまたはTypeの基盤となるシステム型と同一であるかどうかを判定します。リフレクション処理などで型同士を比較したい場合に役立つメソッドです。
構文
public virtual bool Equals (Type o); public override bool Equals (object o);
パラメータ
o:現在のTypeの基盤となるシステム型と比較する対象となるオブジェクトまたは型を指定します。
戻り値
両方の基盤システム型が同じ場合は true、異なる場合は false を返します。
Type.Equals()メソッドの使用例
まず、異なる型(UInt16とInt32)を比較する基本的な例を見てみましょう。
using System;
public class Demo {
public static void Main(string[] args) {
Type val1 = typeof(System.UInt16);
Type val2 = typeof(System.Int32);
Console.WriteLine("Are both the types equal? " + val1.Equals(val2));
}
}
出力結果
Are both the types equal? False
この例では、System.UInt16 と System.Int32 はそれぞれ異なる型であるため、Equals()メソッドは false を返します。
別の使用例:TypeInfoをTypeにキャストして比較
次に、GetTypeInfo()で取得したTypeInfoオブジェクトをTypeにキャストし、元の型と比較する例を紹介します。
using System;
using System.Reflection;
public class Demo {
public static void Main(string[] args) {
Type type = typeof(String);
Object obj = typeof(String).GetTypeInfo();
Type type2 = obj as Type;
if (type2 != null)
Console.WriteLine("Both types are equal? " + type.Equals(type2));
else
Console.WriteLine("Cannot cast!");
}
}
出力結果
Both types are equal? True
この例では、typeof(String)から取得したTypeInfoを as 演算子でTypeにキャストし、元のString型と比較しています。両者は同じ基盤システム型を表しているため、Equals()メソッドは true を返します。キャストに失敗した場合に備えてnullチェックを行っている点もポイントです。
まとめ
Type.Equals()メソッドを使えば、2つのTypeオブジェクトが同じ基盤システム型を表しているかどうかを簡単に判定できます。Type型同士だけでなく、object型との比較にも対応しているため、==演算子よりも柔軟な型比較が可能です。動的な型チェックやリフレクションを活用したプログラムを書く際に、ぜひ活用してみてください。
-
C#のType.GetArrayRank()メソッドの使い方を徹底解説
C#におけるType.GetArrayRank()メソッドは、配列の次元数(ランク)を取得するためのメソッドです。多次元配列が何次元であるかをプログラム上で確認したい場合に便利な機能です。構文public virtual int GetArrayRank ();このメソッドは、対象の型が配列である場合にその次元数をint型で返します。戻り値の「ランク」とは、配列の角括弧内のカンマの数+1、つまり配列のインデックスの数を表します。使用例1:3次元配列のランクを取得するまずは、3次元のint型配列に対してType.GetArrayRank()メソッドを使用する基本的な例を見てみましょう。using
-
C#のElementAt()メソッドの使い方をわかりやすく解説
ElementAt()は、C#のSystem.Linq名前空間に含まれる拡張メソッドの一つで、配列やリストなどのシーケンスから、指定したインデックス位置にある要素を取得・表示するために使用します。 基本的な使い方 まず、次のような文字列配列を用意します。 string[] arr = { One, Two, Three, Four, Five }; この配列からインデックス0の要素を取得したい場合は、ElementAt()メソッドにインデックス番号を引数として渡します。 arr.ElementAt(0); サンプルコード 以下は、ElementAt()メソッドを使って特定のインデックスの要素を