Get the instance name of the object no the object type name in C# 4.0

后端 未结 3 1740
自闭症患者
自闭症患者 2021-01-13 02:49

Assume this type:

public class Car { } 

And I create an instance of that:

Car myCar = new Car();

Target target = new Targe         


        
相关标签:
3条回答
  • 2021-01-13 03:01

    There is no such thing as "name of the instance". What you're saying about is the name of the specific reference to the object; there could be many references to the same object, all with different names. Also, linking code and data (i.e. relying on the variable name) is a bad practice.

    If you want Car to have some name, then name it explicitly:

    public class Car {
        public string Name { get; set; }
    } 
    
    Car myCar = new Car { Name = "myCar" };
    
    0 讨论(0)
  • 2021-01-13 03:05

    Objects do not have a name, unless they explicitly have a way to store their name. myCar is a local variable - the object itself (the Car) does not know that you are referring to it by the name myCar. To illustrate:

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

    Now all three variables refer to the same Car.

    If you want cars to have names, you could do

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

    and then assign and read whatever name you want it to have.

    0 讨论(0)
  • 2021-01-13 03:20

    No, this is not possible. Why? Because myCar is only a name for your Car instance inside the scope which you set up the variable for. What gets saved to target.Model is a reference to the Car instance. So, after your sample code, both myCar and target.Model reference the same instance of Car, just with different names. The names themselves are rather unimportant to the execution of the program, it's just a trick we use to make talking about instances easier.

    0 讨论(0)
提交回复
热议问题