5

次のタイプを想定します。

public class Car { } 

そして、そのインスタンスを作成します:

Car myCar = new Car();

Target target = new Target();
target.Model = myCar;

そして、これは別のタイプです:

public class Target {

   public object Model { get; set; }

   string GetName(){

     //Use Model and return myCar in this Example
   }

}

コードで示したように、GetNameメソッドはオブジェクト タイプ ( Model) を使用する必要があり、この例では myCar というインスタンスの名前を返す必要があります。これを行う方法はありますか?

更新 これはどうですか:

public class Car {

  public string Title { get; set; }

}

そして、私はターゲットに渡します:target.Model = Car.Title

GetName()メソッドが返されましたTitleか?

4

3 に答える 3

4

オブジェクトに名前を格納する方法が明示的にない限り、オブジェクトには名前がありません。myCarはローカル変数です-オブジェクト自体(Car)は、名前で参照していることを認識していませんmyCar。説明する:

Car myCar = new Car();
Car car2 = myCar;
Car car3 = myCar;

これで、3つの変数すべてが同じ Carを参照します。

車に名前を付けたい場合は、

public class Car 
{
    public string Name { get; set; }
} 

次に、任意の名前を割り当てて読み取ります。

于 2012-04-18T08:16:27.367 に答える
3

いいえ、これは不可能です。なんで?これは、変数を設定したスコープのインスタンスの名前myCarすぎないためです。保存されるのは、インスタンスへの参照です。したがって、サンプルコードの後で、両方とが同じインスタンスを参照しますが、名前は異なります。名前自体はプログラムの実行にとってかなり重要ではありません。これは、インスタンスについて話しやすくするために使用するトリックにすぎません。Cartarget.ModelCarmyCartarget.ModelCar

于 2012-04-18T08:16:57.507 に答える
1

「インスタンスの名前」などはありません。あなたが言っているのは、オブジェクトへの特定の参照の名前です。同じオブジェクトへの参照が多く、すべて異なる名前である可能性があります。また、コードとデータをリンクする(つまり、変数名に依存する)ことは悪い習慣です。

名前を付けたい場合は、明示的Carに名前を付けてください。

public class Car {
    public string Name { get; set; }
} 

Car myCar = new Car { Name = "myCar" };
于 2012-04-18T08:16:35.583 に答える