Objectクラス
C#もJavaと同様、全てのクラスは必ずObjectクラスを継承していることになる。また、構造体もObjectクラスを継承している*1。
Objectクラスは引数なしのコンストラクタと、いくつかのメソッドを持っている。
宣言 | 概要 |
---|---|
public virtual bool Equals(Object obj) | このオブジェクトがobjと等しいかどうかを返す |
public static bool Equals(Object objA, Object objB) | objAとobjBが等しいかどうかを返す |
public virtual int GetHashCode() | コレクションで使用するハッシュ関数 |
public Type GetType() | Typeオブジェクトを取得する*2 |
public virtual string ToString() | オブジェクトの文字列表現を取得する |
~Object() | デストラクタ*3 |
protected Object MemberwiseClone() | オブジェクトを複製する*4 |
public static bool ReferenceEquals(Object objA, Object objB) | objAとobjBが同じ実体かどうかを返す |
で、一つ注意。
using System; class Program { static void Main(string[] args) { int a = 10; Console.WriteLine(object.ReferenceEquals(a, a).ToString()); } }
このプログラムはFalseを出力する。これは引数が参照型のObjectだからボックス化されるから。