C# 在不同方法中使用数组

C# 在不同方法中使用数组,c#,function,methods,C#,Function,Methods,我正在用C语言编写代码, 此代码允许您将项目添加到代码、价格、单位等中。将它们保存在数组中,菜单将显示聚合的项目。 我有一个问题,因为我这样做,显然我的代码不工作,有人能帮我吗?。 国王问候。 我是这方面的新手 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Market { publ

我正在用C语言编写代码, 此代码允许您将项目添加到代码、价格、单位等中。将它们保存在数组中,菜单将显示聚合的项目。 我有一个问题,因为我这样做,显然我的代码不工作,有人能帮我吗?。 国王问候。 我是这方面的新手

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Market
{
    public class Menu
    {
        public static int item { get; set; }
        public static string[] product = new string[item];
        public static string[] code = new string[item];
        public static  string[] price = new string[item];
        public static string[] unit = new string[item];

        public void showMenu()
        {
            Console.WriteLine("1.- Add new item");
            Console.WriteLine("2.- Show items");
            Console.WriteLine("3.- Exit");
            //Menu 
            while (true)
            {
                string option = Console.ReadLine();

                switch (option)
                {
                    case "1":
                        addItem();
                        break;
                    case "2":
                        showItems();
                        break;
                    case "3":
                        System.Environment.Exit(-1);
                        Console.ReadKey();
                        break;
                    default:
                        Console.WriteLine("Select one valid option..");
                        break;
                }
            }

        }

        public static void addItem()
        {
            Console.WriteLine("\nAmount of items to add");
            item = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Insert the items.");
            for (int i = 0; i < item; i++)
            {
                Console.WriteLine("\nItem[" + i + "]: ");
                Console.Write("Product[" + i + "]: ");
                product[i] = Console.ReadLine();

                Console.Write("Code[" + i + "]: ");
                code[i] = Console.ReadLine();

                Console.Write("Price[" + i + "]: ");
                price[i] = Console.ReadLine();

                Console.Write("Unit[" + i + "]: ");
                unit[i] = Console.ReadLine();
            }

        }

        public static void showItems()
        {
            Console.WriteLine("******* SHOW ITEMS *******");
            Console.WriteLine("Product ------------- Code ------------- Price ------------- Unit");
            for (int i = 0; i < item; i++)
            {
                Console.WriteLine(product[i] + "                 " + code[i] + "                    " + price[i] + "                     " + unit[i]);
            }
        }
        }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间市场
{
公共类菜单
{
公共静态int项{get;set;}
公共静态字符串[]产品=新字符串[项目];
公共静态字符串[]代码=新字符串[项目];
公共静态字符串[]价格=新字符串[项目];
公共静态字符串[]单位=新字符串[项目];
公共void showMenu()
{
控制台写入线(“1.-添加新项”);
控制台写入线(“2-显示项目”);
控制台写入线(“3-退出”);
//菜单
while(true)
{
字符串选项=Console.ReadLine();
开关(选件)
{
案例“1”:
addItem();
打破
案例“2”:
showItems();
打破
案例“3”:
系统。环境。退出(-1);
Console.ReadKey();
打破
违约:
Console.WriteLine(“选择一个有效选项…”);
打破
}
}
}
公共静态void addItem()
{
Console.WriteLine(“\n要添加的项目数量”);
item=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“插入项目”);
对于(int i=0;i
您正在初始化长度为零的数组。在应用程序启动时初始化的数组和项属性是静态的。所以,当您更改项字段时,您的数组已经用默认值int初始化,即零。您应该在设置item属性后初始化数组。即使在此之后,您也无法将项添加到阵列中。尝试改用列表。

您正在初始化长度为零的数组。在应用程序启动时初始化的数组和项属性是静态的。所以,当您更改项字段时,您的数组已经用默认值int初始化,即零。您应该在设置item属性后初始化数组。即使在此之后,您也无法将项添加到阵列中。尝试改用列表。

代码几乎没有问题

  • 为产品、代码等创建的数组的大小为零,因为默认情况下,
    item
    value为零。向
    0
    大小的数组插入任何值都会引发异常
  • 此外,在非静态上下文中访问静态字段时也应谨慎。
  • 我建议用这些属性定义一个类,并使用
    列表
    保存集合

    public class Product
    {
        public string Name {get;set;}
        public string Code {get;set;}
        public double Price {get;set;}
        public int Unit {get;set;}  
    }
    
    现在修改您的
    附加项
    ,以创建产品

        public static void addItem()
        {
            Console.WriteLine("\nAmount of items to add");
            item = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Insert the items.");
            for (int i = 0; i < item; i++)
            {
                var product = new Product();
                Console.WriteLine("\nItem[" + i + "]: ");
                Console.Write("Product[" + i + "]: ");
                product.Name = Console.ReadLine();
    
                Console.Write("Code[" + i + "]: ");
                product.Code = Console.ReadLine();
    
                Console.Write("Price[" + i + "]: ");
                product.Price = double.Parse(Console.ReadLine());  //read as double value.
    
                Console.Write("Unit[" + i + "]: ");
                product.Unit = int.Parse(Console.ReadLine()); // Read as int value
    
                products.Add(product); // products is global/class variable.
            }
        }
    
    公共静态void addItem()
    {
    Console.WriteLine(“\n要添加的项目数量”);
    item=Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(“插入项目”);
    对于(int i=0;i

    检查这个,它会给你一个继续的想法

    代码几乎没有问题

  • 为产品、代码等创建的数组的大小为零,因为默认情况下,
    item
    value为零。向
    0
    大小的数组插入任何值都会引发异常
  • 此外,在非静态上下文中访问静态字段时也应谨慎。
  • 我建议用这些属性定义一个类,并使用
    列表
    保存集合

    public class Product
    {
        public string Name {get;set;}
        public string Code {get;set;}
        public double Price {get;set;}
        public int Unit {get;set;}  
    }
    
    现在修改您的
    附加项
    ,以创建产品

        public static void addItem()
        {
            Console.WriteLine("\nAmount of items to add");
            item = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Insert the items.");
            for (int i = 0; i < item; i++)
            {
                var product = new Product();
                Console.WriteLine("\nItem[" + i + "]: ");
                Console.Write("Product[" + i + "]: ");
                product.Name = Console.ReadLine();
    
                Console.Write("Code[" + i + "]: ");
                product.Code = Console.ReadLine();
    
                Console.Write("Price[" + i + "]: ");
                product.Price = double.Parse(Console.ReadLine());  //read as double value.
    
                Console.Write("Unit[" + i + "]: ");
                product.Unit = int.Parse(Console.ReadLine()); // Read as int value
    
                products.Add(product); // products is global/class variable.
            }
        }
    
    公共静态void addItem()
    {
    Console.WriteLine(“\n要添加的项目数量”);
    item=Convert.ToInt32(Console.ReadLine());
    Console.WriteLine(“插入项目”);
    对于(int i=0;i    public static int item { get; set; }
        //just declare your arrays here
        public string[] product;
        public string[] code;
        public string[] price;
        public string[] unit;
    
        public void addItem()
        {
            Console.WriteLine("\nAmount of items to add");
            item = Convert.ToInt32(Console.ReadLine());
    
            //instantiate your arrays here since item will have a value you have set it into.
            product = new string[item];
            code = new string[item];
            price = new string[item];
            unit = new string[item];
    
            Console.WriteLine("Insert the items.");
    
    using System;
    using System.Collections.Generic;
    
    namespace Market
    {
        public class Menu
        {
            public struct Item
            {
                public string product;
                public string code;
                public string price;
                public string unit;
            }
            public static List<Item> items = new List<Item>();
    
            public static void showMenu()
            {
                //Menu 
                while (true)
                {
                    Console.WriteLine("\n1.- Add new item");
                    Console.WriteLine("2.- Show items");
                    Console.WriteLine("3.- Exit");
    
                    string option = Console.ReadLine();
    
                    switch (option)
                    {
                        case "1":
                            addItem();
                            break;
                        case "2":
                            showItems();
                            break;
                        case "3":
                            System.Environment.Exit(-1);
                            Console.ReadKey();
                            break;
                        default:
                            Console.WriteLine("Select one valid option..");
                            break;
                    }
                }
    
            }
    
            public static void addItem()
            {
                Console.WriteLine("\nAmount of items to add");
                int numbItemsToAdd = Convert.ToInt32(Console.ReadLine());  // needs validation
                Console.WriteLine("Insert the items.");
                for (int i = 0; i < numbItemsToAdd; i++)
                {
                    Item item = new Item();
                    Console.WriteLine("\nItem[" + (i + 1) +"]: ");
                    Console.Write("Product[" + (i + 1) +"]: ");
                    item.product = Console.ReadLine();
    
                    Console.Write("Code[" + (i + 1) + "]: ");
                    item.code = Console.ReadLine();
    
                    Console.Write("Price[" + (i + 1) + "]: ");
                    item.price = Console.ReadLine();
    
                    Console.Write("Unit[" + (i + 1) + "]: ");
                    item.unit = Console.ReadLine();
    
                    items.Add(item);
                }
    
            }
    
            public static void showItems()
            {
                Console.WriteLine("******* SHOW ITEMS *******");
                Console.WriteLine("Product ------------- Code ------------- Price ------------- Unit");
    
                foreach(Item i in items)
                {
                    Console.WriteLine(i.product + "                " + i.code + "                   " + i.price + "                    " + i.unit);
                }
            }
    
    
    
            public static void Main()
            {
                showMenu();
            }
        }
    
    
    }
    
      public class Menu
      {
        public static int item { get; set; }
        public static List<string> product = new List<string>();
        public static List<string> code = new List<string>();
        public static List<string> price = new List<string>();
        public static List<string> unit = new List<string>();
    
        public void showMenu()
        {
            //Menu 
            while (true)
            {
                Console.WriteLine("\n1.- Add new item");
                Console.WriteLine("2.- Show items");
                Console.WriteLine("3.- Exit \n");
    
                string option = Console.ReadLine();
    
                switch (option)
                {
                    case "1":
                        addItem();
                        break;
                    case "2":
                        showItems();
                        break;
                    case "3":
                        System.Environment.Exit(-1);
                        Console.ReadKey();
                        break;
                    default:
                        Console.WriteLine("Select one valid option..");
                        break;
                }
            }
    
        }
    
        public static void addItem()
        {
            Console.WriteLine("\nAmount of items to add");
            item = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Insert the items.");
            for (int i = 1; i <= item; i++)
            {
                Console.WriteLine("\nItem[" + i + "]: ");
                Console.Write("Product[" + i + "]: ");
                product.Add(Console.ReadLine());
    
                Console.Write("Code[" + i + "]: ");
                code.Add(Console.ReadLine());
    
                Console.Write("Price[" + i + "]: ");
                price.Add(Console.ReadLine());
    
                Console.Write("Unit[" + i + "]: ");
                unit.Add(Console.ReadLine());
            }
    
        }
    
        public static void showItems()
        {
            Console.WriteLine("******* SHOW ITEMS *******");
            Console.WriteLine("Product ------------- Code ------------- Price ------------- Unit");
            for (int i = 0; i < item; i++)
            {
                Console.WriteLine(product[i] + "                 " + code[i] + "                    " + price[i] + "                     " + unit[i]);
            }
        }
    }