首页 > 解决方案 > 无法将数据设置到列表中然后打印。

问题描述

我正在尝试将数据存储到复杂类型列表中,然后再打印。我正在尝试使用属性然后打印它,但似乎我遗漏了一些东西。请帮忙。

    class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Enter Color");
        string color = Console.ReadLine();
        Console.WriteLine("Enter transmition");
        string transmition = Console.ReadLine();
        Console.WriteLine("Enter Name");
        string name = Console.ReadLine();
        List<DatabaseCar> arr = new List<DatabaseCar> { };
        DatabaseCar databaseCar = new DatabaseCar(color, transmition, name);
        arr.Add(databaseCar);
        foreach (DatabaseCar data in arr)
        {
            Console.WriteLine(data);
        }
        Console.ReadKey();
    }
}

abstract class Data
{
    protected string color;
    protected string engine;
    protected string name;

    public abstract void set(string color, string engine, string name);

    public string Color
    {
        get
        {
            return color;
        }
    }
    public string Engine
    {
        get
        {
            return engine;
        }
    }
    public string Name
    {
        get
        {
            return name;
        }
    }
}

class DatabaseCar : Data
{
    public override void set(string color, string engine, string name)
    {
        this.color = color;
        this.engine = engine;
        this.name = name;
    }

    public DatabaseCar(string color, string engine, string name)
    {
        set(color, engine, name);
    }
}

我从中得到的结果是:

输入颜色:红色输入传输:手动输入名称:John ConsoleApp1.DatabaseCar

标签: c#console

解决方案


这是因为Console.WriteLine调用ToString()了一个没有被其他重载之一特别支持的对象。ToString()默认情况下返回类型的字符串表示。

为了解决这个问题,您必须使用自定义实现来覆盖 ToString() 来满足您的需求。

public override string ToString()
{
    // construct the representation that you want and return it.
}

推荐阅读