假设此类型:
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
?
答案 0 :(得分:4)
对象没有名称,除非他们明确地有办法存储他们的名字。 myCar
是一个局部变量 - 对象本身(Car
)不知道您通过名称myCar
引用它。举例说明:
Car myCar = new Car();
Car car2 = myCar;
Car car3 = myCar;
现在所有三个变量都引用相同的 Car
。
如果你想要汽车有名字,你可以做
public class Car
{
public string Name { get; set; }
}
然后分配并阅读您希望它拥有的任何名称。
答案 1 :(得分:3)
不,这是不可能的。为什么?由于myCar
只是<{1>}实例 内的名称,因此您为其设置了变量。保存到Car
的内容是target.Model
实例的引用。因此,在您的示例代码之后,Car
和myCar
引用target.Model
的同一个实例,只是使用不同的名称。这些名称本身对于程序的执行并不重要,它只是我们用来简化实例讨论的一种技巧。
答案 2 :(得分:1)
没有“实例名称”这样的东西。你所说的是对象的具体引用的名称;可能有许多对同一对象的引用,都有不同的名称。此外,链接代码和数据(即依赖变量名称)是一种不好的做法。
如果您希望Car
有一些名称,请将其命名为明确:
public class Car {
public string Name { get; set; }
}
Car myCar = new Car { Name = "myCar" };