获取对象的实例名称,而不是C#4.0中的对象类型名称

假设这种类型:

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

不,这是不可能的。 为什么? 因为myCar只是您为其设置变量的范围Car实例的名称 。 保存到target.Model是对Car实例的引用 。 因此,在您的示例代码之后, myCartarget.Model引用相同的Car实例,只是使用不同的名称。 名称本身对于程序的执行并不重要,它只是我们用来使实例更容易讨论实例的技巧。

对象没有名称,除非他们明确地有办法存储他们的名字。 myCar是一个局部变量 – 对象本身( Car不知道你是用名字myCar来引用它的。 为了显示:

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

现在所有三个变量都指向 Car

如果你想让汽车有名字,你可以做到

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

然后分配和读取您希望它拥有的任何名称。

没有“实例的名称”这样的东西。 你所说的是对象的具体引用的名称; 可能有许多对同一对象的引用,都有不同的名称。 此外,链接代码和数据(即依赖于变量名称)是一种不好的做法。

如果您希望Car有一些名称,请明确命名:

 public class Car { public string Name { get; set; } } Car myCar = new Car { Name = "myCar" };