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是一个局部变量 - 对象本身 (the Car)不知道您通过名称引用它myCar。为了显示:

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

现在所有三个变量都指向相同 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 回答