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

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

我从中得到的结果是:

输入颜色:
红色的
输入传输:
手动的
输入名字:
约翰
ConsoleApp1.DatabaseCar

最佳答案

这是因为 Console.WriteLine 对一个对象调用 ToString() ,该对象不受其其他重载之一的特别支持。 ToString() 默认返回类型的字符串表示。

为了解决这个问题,你必须用一个自定义的实现来覆盖 ToString() 来做你想要的。

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

关于c# - 无法将数据设置到列表中然后打印出来。,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51269648/

10-08 20:31