Я пытаюсь распечатать сведения о продукте с помощью метода отображения (), но это не работает. созданный класс продукта и попытка отображения с помощью доступа из main

#c#

Вопрос:

Я пытаюсь распечатать сведения о продукте, создав класс Product и метод Display() в классе Product для отображения сведений о продукте.

Я создал массив продуктов и пытаюсь сохранить продукты в массиве и пытаюсь отобразить продукты из массива с помощью метода отображения.

Пользователь должен предоставить выбор , хочет ли он ДОБАВИТЬ ПРОДУКТ, ОТОБРАЗИТЬ ПРОДУКТ или ВЫЙТИ

на основе выбора необходимо выполнить действие.

 
 class Product
    {

        private static int m_intProductCounter = 0;       // Initially Making Product Count = 0



        public Product()                               // Constructor for class Product
        {
            m_intProductCounter  ;                  // Whenever new object is created or Constructor is called Count Increases
        }



        public int ProductCount                         // Properity for Product Count
        {
            get { return m_intProductCounter; }
        }


        private int m_intProductid;               // Product Id Variable

        public int ProductId                      // properity for Product Id
        {
            get { return m_intProductid; }
            set
            {
                if (value > 0)
                    m_intProductid = value;
                else
                    throw new Exception("Invalid Product Id! Please Check Product Id.");
            }
        }



        private string m_strProductName;            //  Product Name Variable

        public string ProductName                   //  Properity for Product Name
        {
            get { return m_strProductName; }
            set
            {
                if (value.Length > 3)
                    m_strProductName = value;
                else
                    throw new Exception("Invalid Product Name! Please Check Product Name.");
            }
        }



        private DateTime m_dateManufacturedDate = DateTime.UtcNow;           // Product Manufactured date variable




        //private DateTime m_dateExpiryDate;

        public DateTime ExpiryDate                                      // Product Expiry Date Calculation
        {
            get { return m_dateManufacturedDate.AddYears(2); }
        }



        private int m_intProductQuantity;                  // Product Quantity variable

        public int ProductQnty
        {
            get { return m_intProductQuantity; }             // Properity for Product Quantity

            set
            {
                if (value > 0 amp;amp; value <= 500)
                    m_intProductQuantity = value;
                else if (value < 0)
                    throw new Exception("Invalid Quantity! Product Quantity cannot be Less Than 0");
                else
                    throw new Exception("Invalid Quantity! Product Quantity Cannot be more than 500.");
            }
        }



        private decimal m_decProductPrice;                     // Product Price variable

        public decimal ProductPrice                         // Properity for Product Price
        {
            get { return m_decProductPrice; }
            set
            {
                if (value > 0)
                    m_decProductPrice = value;
                else
                    throw new Exception("Invalid Producr Price! Product price Cannot Be less than 0");
            }
        }



        private decimal m_decDiscountPrice;                 // Product Discount variable

        public decimal Discount                             // Properity for Product Discount
        {
            get { return m_decDiscountPrice; }
            set
            {
                if (value <= 45 amp;amp; value > 0)
                    m_decDiscountPrice = value;
                else if (value < 0)
                    throw new Exception("Product Discount can be either 0 or morethan that, but can't be zero.");
                else
                    throw new Exception("Product discount can't be more than 45");
            }
        }

        public string Display()                                                  // Displaying Product Details.
        {
            StringBuilder display = new StringBuilder();

            display.Append("Product ID = "   ProductId   "n");
            display.Append("Product Name = "   ProductName   "n");
            //disp.Append("Product Manufactured Date = "   );
            display.Append("Product Expiry Date = "   ExpiryDate   "n");
            display.Append("Product Price Per 1 Quantity = "   ProductPrice   "n");
            display.Append("Product Quantity = "   ProductQnty   "n");
            display.Append("Product Discount per 1 Quantity= "   Discount   "n");


            return display.ToString();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {

            while (true)
            {
                Console.WriteLine("Enter 1 to ADD product.n Enter 2 to Display Product. n Enter 3 to Exit.");
                string Instruction = Console.ReadLine();
                Product[] products = new Product[3];

                switch (Instruction)
                {
                    case "1":
                        {
                            Product p1 = new Product();

                            Console.Write("Enter Producr Id : ");
                            p1.ProductId = Convert.ToInt32(Console.ReadLine());


                            Console.Write("Enter Product Name : ");
                            p1.ProductName = Console.ReadLine();


                            Console.Write("Enter Product Quantity : ");
                            p1.ProductQnty = Convert.ToInt32(Console.ReadLine());


                            Console.Write("Enter Product Price : ");
                            p1.ProductPrice = Convert.ToDecimal(Console.ReadLine());


                            Console.Write("Enter Product Discount in number without % symbol : ");
                            p1.Discount = Convert.ToDecimal(Console.ReadLine());


                            
                            products.Append(p1);


                            Console.WriteLine("n n n"   "Product Added Succesfully n "   "ThankYou.");

                            Console.WriteLine("Total Products Entered = "   p1.ProductCount);




                        }
                        break;

                    case "2":
                        {
                            Console.WriteLine(products[0].Display());
                            break;
                        }
                }
                if (Instruction == "3")
                    break;
            }
        }


    }

 

Комментарии:

1. Почему вы используете products.Append(p1); для добавления элемента в свой массив «продукты»?

2. чтобы вставить p1 в массив, если это неправильно, подскажите мне, что использовать вместо этого.

Ответ №1:

почему вы используете массив для сбора продуктов? И внутри, пока вы всегда создаете новый массив для продуктов (внутри, пока: Продукт[] продукты = новый продукт[3];)!

Используйте список или любую динамическую коллекцию в этом случае, измените свой основной метод на этот:

 static void Main(string[] args)
{
            var products = new List<Product>();
            while (true)
            {
                Console.WriteLine("Enter 1 to ADD product.n Enter 2 to Display Product. n Enter 3 to Exit.");
                string Instruction = Console.ReadLine();
                

                switch (Instruction)
                {
                    case "1":
                        {
                            var p1 = new Product();

                            Console.Write("Enter Producr Id : ");
                            p1.ProductId = Convert.ToInt32(Console.ReadLine());


                            Console.Write("Enter Product Name : ");
                            p1.ProductName = Console.ReadLine();


                            Console.Write("Enter Product Quantity : ");
                            p1.ProductQnty = Convert.ToInt32(Console.ReadLine());


                            Console.Write("Enter Product Price : ");
                            p1.ProductPrice = Convert.ToDecimal(Console.ReadLine());


                            Console.Write("Enter Product Discount in number without % symbol : ");
                            p1.Discount = Convert.ToDecimal(Console.ReadLine());



                            products.Add(p1);


                            Console.WriteLine("n n n"   "Product Added Succesfully n "   "ThankYou.");

                            Console.WriteLine("Total Products Entered = "   p1.ProductCount);




                        }
                        break;

                    case "2":
                        {
                            foreach (var item in products)
                                Console.WriteLine(item.Display());
                            break;
                        }
                }
                if (Instruction == "3")
                    break;
            }
        }
 

Комментарии:

1. Спасибо, это сработало, я заменил продукт[] продукты = новый продукт[3]; выше ПОКА. Я хочу попробовать использовать МАССИВ вместо СПИСКА.

2. и измените свой массив на динамическую коллекцию )