Assume this type:
public class Car { }
And I create an instance of that:
Car myCar = new Car();
Target target = new Targe
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" };
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.
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.