如何在控制台中显示struct对象?

时间:2014-09-26 11:10:04

标签: c# console-application

我已经为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();
        }
}

现在您可以看到我创建了一个结构,然后创建了一个列表并保存了struct&#34; P&#34;在列表中。现在我的问题是如何访问该对象&#34; P&#34;保存在列表中以显示某些循环中的几个产品,比如for循环?

2 个答案:

答案 0 :(得分:1)

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

这样你可以根据需要进行格式化

答案 1 :(得分:0)

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

会给你一些结果:&#34; .Product&#34;因为产品是一个结构。 要获得正确的结果,您应该使用Product结构中定义的属性,请参阅下面的

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

所以它会给你结果

产品:abc

产品:xyz