如何在控制台中显示结构对象

本文关键字:显示 结构 对象 控制台 | 更新日期: 2023-09-27 18:24:32

我已经为POS(销售点)编写了一个控制台应用程序。这是我的任务。我成功地完成了它,但我的教授要求用结构和列表再做一次。这是我的代码,只是结构和列表,我省略了不必要的应用程序代码:

namespace simplePOS
{
    struct Product
    {
        public string productName;
        public double productUnitPrice;
        public int productQty;
    }
    class Program
    {
        static void Main(string[] args)
        {
            List<Product> Products = new List<Product>();
            Product P;
            P.productName = Console.ReadLine();
            P.productUnitPrice = Convert.ToDouble(Console.ReadLine());
            P.productQty = Convert.ToInt32(Console.ReadLine());
            Products.Add(P);
            foreach(Product x in Products){ //This doesn't work.
                Console.WriteLine(x);
            }
            Console.ReadLine();
        }
}

现在,正如你所看到的,我已经创建了一个结构,然后创建了一份列表,并在列表中保存了结构"p"的对象。现在我的问题是,我如何访问列表中保存的对象"P",以在某个循环中显示几个产品,比如for循环?

如何在控制台中显示结构对象

覆盖ToString()

struct Product
{
    public string productName;
    public double productUnitPrice;
    public int productQty;
        public override string ToString()
        {
            return string.Format("Name: {0}, Price: {1}, Qty: {2}",productName,productUnitPrice,productQty);
        }
}

并继续使用

foreach (Product x in Products)
{
    Console.WriteLine(x);
}

通过这种方式,您可以根据需要格式化

foreach(Product x in Products)
{
  Console.WriteLine(x);
}

将给您类似于".Product"的结果,因为Product是一个结构。要获得正确的结果,您应该使用在产品结构中定义的属性。请参阅下面的

foreach(Product x in Products)
{
  Console.WriteLine("Product: "+x.productName);
}

所以它会给你的结果

产品:abc

产品:xyz