オブジェクトのシリアル化されたバージョンを保存して開くことが本当にやりたいことであるというコメントを読んだ後、この回答を提供します。
Save
メソッドは常に同じです。
class Car {
public void Save(String fileName) {
// Serialize the fields of the current instance to the file.
}
}
シリアライズされたデータから新しいインスタンスを初期化するには、コンストラクターを使用できます。
class Car {
public void Car(String fileName) {
// Initialize a new instance from the serialized data in the file.
}
}
別のオプションは、静的ファクトリ メソッドを提供することです。
class Car {
public static Car Open(String fileName) {
var car = new Car();
// Initialize the new instance from the serialized data in the file.
return car;
}
}
要点は、「Open」メソッドはCar
インスタンスのメソッドではないということです。コンストラクターまたは静的メソッドのいずれかである必要があります。次に、「参照と等しいオブジェクトを内部的に設定する」必要はありません(とにかく不可能です)。
いくつかの点で、質問で提示した考え方は、プロトタイプベースのプログラミングに似ています。ただし、C# はプロトタイプ ベースの言語ではなく、クラス ベースの言語です。