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.