System.Object クラス

この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。

クラスは Object 、すべての .NET クラスの最終的な基底クラスです。これは型階層のルートです。

.NET のすべてのクラスは派生 Objectしているため、クラスで Object 定義されているすべてのメソッドは、システム内のすべてのオブジェクトで使用できます。 派生クラスでは、次のようなメソッドの一部をオーバーライドできます。

  • Equals: オブジェクト間の比較をサポートします。
  • Finalize: オブジェクトが自動的に再利用される前に、クリーンup 操作を実行します。
  • GetHashCode: ハッシュ テーブルの使用をサポートするために、オブジェクトの値に対応する数値を生成します。
  • ToString: クラスのインスタンスを記述する人間が判読できるテキスト文字列を作成します。

通常、言語では継承が暗黙的であるため、継承 Object を宣言するクラスは必要ありません。

パフォーマンスに関する考慮事項

任意の種類のオブジェクトを処理する必要があるクラス (コレクションなど) を設計する場合は、クラスのインスタンスを受け入れるクラス メンバーを Object 作成できます。 ただし、型のボックス化とボックス化解除のプロセスでは、パフォーマンス コストが発生します。 新しいクラスが特定の値の種類を頻繁に処理することがわかっている場合は、2 つの戦術のいずれかを使用して、ボックス化のコストを最小限に抑えることができます。

  • 型を受け入れる一般的な Object メソッドと、クラスが頻繁に処理する必要がある各値型を受け入れる型固有のメソッド オーバーロードのセットを作成します。 呼び出し元のパラメーター型を受け入れる型固有のメソッドが存在する場合、ボックス化は行われず、型固有のメソッドが呼び出されます。 呼び出し元のパラメーター型に一致するメソッド引数がない場合、パラメーターはボックス化され、一般的なメソッドが呼び出されます。
  • ジェネリックを使用 するように型とそのメンバーを設計します。 共通言語ランタイムは、クラスのインスタンスを作成し、ジェネリック型引数を指定するときに、閉じたジェネリック型を作成します。 ジェネリック メソッドは型固有であり、呼び出し元のパラメーターをボックス化せずに呼び出すことができます。

型を受け入れて返す Object 汎用クラスを開発する必要がある場合もありますが、頻繁に使用される型を処理する型固有のクラスを提供することで、パフォーマンスを向上させることができます。 たとえば、ブール値の設定と取得に固有のクラスを指定すると、ブール値のボックス化とボックス化解除のコストが削減されます。