2012-04-18 83 views
5

对象类型名称假设此类型:获取对象的实例名称没有在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)和RET在此示例中是否使用了myCar的实例的名称?你有什么建议可以做到吗?

更新 如何:

public class Car { 

    public string Title { get; set; } 

} 

我传递给目标:target.Model = Car.Title

而且GetName()方法返回Title

+0

变量名不制造和不应该在业务逻辑 – zerkms 2012-04-18 08:14:15

+0

任何意义所以,如果你改变的变量名,事情打破? – VVS 2012-04-18 08:15:08

+0

为什么'Model'只是一个对象,而不是一个'Car'(或它的一个子类)? – 2012-04-18 08:17:37

回答

3

不,这是不可能的。为什么?因为myCar只是一个名称为您的Car实例里面的您设置变量的范围。保存到target.Model的是参考Car实例。因此,在您的示例代码之后,myCartarget.Model都引用Car的相同实例,只是名称不同。这些名称本身对于程序的执行并不重要,它只是我们用来简化实例的一个技巧。

+0

我更新问题你现在在想什么? – Saeid 2012-04-18 08:20:59

+0

现在我真的不知道你想要达到什么了...... – 2012-04-18 11:12:42

4

对象没有名称,除非它们明确地存储名称。 myCar是一个局部变量 - 对象本身(Car不知道,您指的是名称myCar。为了说明:

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

现在,所有三个变量指相同Car

如果你想汽车拥有的名字,你可以做

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

,然后分配和阅读你希望它有任何名称。

+0

嗯,你总是可以返回的名单...只是开玩笑;-) +1。 – 2012-04-18 08:20:11

+0

我更新问题你现在在想什么? – Saeid 2012-04-18 08:20:43

1

没有“实例的名称”这样的事情。你所说的是关于对象的具体引用的名称;可能会有许多对同一个对象的引用,全部使用不同的名称。而且,链接代码和数据(即依靠变量名称)是一种不好的做法。

如果你想Car有一些名字,然后将其命名明确

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

Car myCar = new Car { Name = "myCar" };