如何显示对象实例的引用变量名称?
我想显示以下内容。
约翰有以下汽车:
加入
prado
这是我的代码。我该如何解决?
class Program
{
static void Main(string[] args)
{
Person John = new Person();
Car mercedes = new Car();
Car prado = new Car();
John.AddCar(mercedes);
John.AddCar(prado);
Console.WriteLine("John has the following cars:");
foreach (Car car in John.Cars)
{
Console.WriteLine(nameof(car)); // not working
}
}
}
class Person
{
public List<Car> Cars { get; set; } = new List<Car>();
public void AddCar(Car arg)
{
arg.Owner = this;
Cars.Add(arg);
}
}
class Car
{
public Person Owner { get; set; }
}
答案 0 :(得分:3)
只需将名称属性添加到Car:
class Car
{
public Person Owner { get; set; }
public string Name {get; set;}
}
Car mercedes = new Car {Name = "Mercedes"};
John.AddCar(mercedes);
John.AddCar(new Car { Name = "Prado" });
foreach (Car car in John.Cars)
{
Console.WriteLine(car.Name); // not working
}
答案 1 :(得分:2)
您应该将模型(或其他内容)添加为汽车类的属性:
class Car
{
public Car(string model)
{
this.Model = model;
}
public string Model { get; set; }
public Person Owner { get; set; }
}
然后像这样构造你的人:
Person John = new Person();
John.AddCar(new Car("mercedes"));
John.AddCar(new Car("prado"));
并打印输出,如下所示:
foreach (Car car in John.Cars)
{
Console.WriteLine(car.Model);
}
简而言之:作为程序员,应该为您使用变量名,以帮助您以易于阅读的方式编写代码。通常不应将其用于面向用户的输出。
nameof()
是在编译时执行的一种便利,对于错误消息等有用。它不会跟随列表中的变量,等等。因此,当您执行foreach (Car car in John.Cars)
时,变量名称是 car
。