获取对象的实例名称,而不是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
实例的引用 。 因此,在您的示例代码之后, myCar
和target.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" };