2016-11-26 8 views
-3

私のC#コードでは、プロパティと関数を持つクラスがあります。さて、私の関数GetCarが値を持つクラス型のオブジェクトを返すようにします。C#でクラスのオブジェクトからクラスのオブジェクトを返す方法は?

私のコードにはエラーがありますが、見つけられません。あなたはコンストラクタを持つオブジェクトを作成するための

public Car GetCar() 
{ 
    return this; 
} 
+4

これはあまり意味のあるコードではありません。 obj.GetCar()の代わりにobjを使うだけです。 –

+0

コンストラクタをコールしますか?例えば'Car car = new Car();'。 –

+0

したがって、_Carインスタンス= new Car()_があり、_Car newInstance = instance.GetCar(); _をコールしたい場合は、あまり意味がありません。 – Steve

答えて

2

私はあなたが以下のようなコードを持ってすべきだと思います。クラスに独自のコンストラクターを定義しない限り、それは暗黙のうちにパブリックパラメーターなしコンストラクター(public defaultコンストラクターとも呼ばれます)を伴います。あなたはコンストラクタを定義していないので、あなたはこの呼び出しで新しいインスタンスを作成することができます。

Car car = new Car(); 

あなたが探しているキーワードは、コンストラクタを呼び出してインスタンスを作成する、newです。

最初にオブジェクトを初期化する場合は、オブジェクトを作成して返すメソッドを使用できます(これは探しているものと思われる)。これはファクトリメソッドと呼ばれます。あなたの例のファクトリメソッドの問題は(そこにコンストラクタコールがないことを除いて)、それがオブジェクト上に定義されているということです。つまり、インスタンスを作成するためにインスタンスが必要です。それは明らかに機能しません。だから、インスタンスではなく、クラスメソッドを作成する必要があります(クラスメソッドと呼ばれます)。クラスメソッドは、C#でstaticというマークを付けて宣言されています。

public class Car 
{ 
    public int CarHouseID { set; get; } 
    public int CarsInHouse{ set; get; } 
    public int CarSold { set; get; } 

    public static Car GetCar() 
    { 
     return new Car(); 
    } 
} 
0

public class Car 
    { 
    public int CarHouseID { set; get; } 
    public int CarsInHouse{ set; get; } 
    public int CarSold { set; get; } 

    public Car GetCar() 
    { 
     return Car; 
    } 
    } 
関連する問題