获取对象的实例名称没有对象类型名称在C#4.0(Get the instance name of t

2019-06-23 17:23发布

假设此类型:

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

Answer 1:

不,这是不可能的。 为什么? 由于myCar是只为你一个名字 Car您设置了变量的范围内的实例。 什么会保存到target.Model是对参考 Car实例。 所以,你的示例代码,后两者myCartarget.Model引用的同一个实例Car ,只是名称不同。 它们的名称是相当不重要的程序的执行,它只是我们用来进行通话关于实例更容易把戏。



Answer 2:

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

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

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

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

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

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



Answer 3:

有作为“的实例的名称为”没有这样的事。 什么你说的是具体的参考对象的名称; 有可能是同一个对象多次提到,所有不同的名字。 此外,连接的代码和数据(即依靠变量名)是一种不好的做法。

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

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

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


文章来源: Get the instance name of the object no the object type name in C# 4.0