如何在C#中显示对象名称?

时间:2018-09-20 01:30:55

标签: c# .net console

如何显示对象实例的引用变量名称?

我想显示以下内容。


约翰有以下汽车:

加入

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; }    
}

2 个答案:

答案 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