C# 如何在C中显示对象名称?
如何显示对象实例的引用变量名 我想显示以下内容 约翰有以下汽车: 梅赛德斯 普拉多 这是我的密码。我怎样才能解决这个问题C# 如何在C中显示对象名称?,c#,.net,console,C#,.net,Console,如何显示对象实例的引用变量名 我想显示以下内容 约翰有以下汽车: 梅赛德斯 普拉多 这是我的密码。我怎样才能解决这个问题 class Program { static void Main(string[] args) { Person John = new Person(); Car mercedes = new Car(); Car prado = new Car();
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; }
}
只需将name属性添加到汽车:
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
}
您应该将模型或其他内容作为属性添加到您的汽车类中:
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);
}
并按如下方式打印输出:
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是在编译时执行的一种方便工具,对于错误消息等非常有用。它不跟随列表等中的变量。因此,当您在John.Cars中为每辆车执行操作时,变量名为Car。通过向车添加制造商、型号或类似属性。您当前的方法不正确。我们需要知道什么不起作用。是否引发异常?编译器错误?它打印的是car而不是prado或Mercedesy你在John中看到foreach car car中的car变量。Cars与mersedes或prado的变量不同,car对它们一无所知。我提供了与Ashkan基本相同的答案,但提供了更多信息,我得到了一张反对票,而他得到了两张赞成票,一张来自我。这似乎合乎逻辑。@myotura您还可以覆盖ToString,例如public override string ToString{return Model;},这样您就可以编写Console.WriteLinecar;。提供适当的ToString方法也有助于在调试期间轻松识别实例。