繁体   English   中英

C#类中的数组

[英]Array in Classes C#

我真的是C#的新手,目前正在从事一项对我来说真的没有意义的任务。 我需要朝正确的方向踢。

分配:

我需要制作一个控制台应用程序,称为杂货店清单。 该购物清单包含一个名为GroceryList的类。 此类包含一个实例变量积,它是一个数组。

该数组包含产品类型的项目。

该类产品具有字符串名称和int数量作为属性。 产品类是抽象的,有2个子类,分别称为新鲜和草药。

我需要证明我可以将项目添加到GroceryList并显示该列表。

我的问题是该数组位于GroceryList类中,并且无法向其添加产品。 我缺少了一些东西,我已经思考了好几个星期了,并尝试了不同的解决方案而没有结果。 我什至想知道分配是否错误。 这是我到目前为止的内容:

namespace GroceryList
{
    class Program
    {
        static void Main(string[] args)
        {
            bool Displaymenu = true;
            while (Displaymenu == true)
            {
                Displaymenu = mainMenu();
            }


        }
        public bool mainMenu()
        {
            Console.WriteLine("What would you like to do?");
            Console.WriteLine("1) add a fresh product");
            Console.WriteLine("2) add a herb");
            Console.WriteLine("3) exit");

            string result = Console.ReadLine();

            if (result == "1");
            {
                Console.Clear();
                product.fresh fresh1 = new product.fresh();
                Console.WriteLine("What type of fresh product would you like to add?");
                fresh1.naam = Console.ReadLine();

                Console.WriteLine("How much of " + fresh1.naam + " would you like to add?");
                string number = Console.ReadLine();
                int quant;
                int.TryParse(number, out quant);
                fresh1.Quantity = quant;



                return true;
            }
        }
    }
    public class GroceryList
    {
        List<product> products = new List<product>();

    }
    abstract class product
    {
        public string naam { get; set; }
        public int Quantity { get; set; }

        public class fresh : product
        {

        }
        public class herbs : product
        {

        }
    }

}

您创建的GroceryList类需要在代码中实例化(声明),以便可以在其中使用List<product> 就像您将fresh1声明为product.fresh对象一样,您必须将对象声明为GroceryList

因此,您可以在代码的开头声明GroceryList list = new GroceryList() 然后,您将需要在GroceryList listproducts字段中添加项目。

有两种方法可以做到这一点。 一种方法是直接访问类内部的list对象。

为此,您需要public list字段,以便可以从对象外部对其进行访问。 要将其声明为公共,请将public关键字放在字段声明的前面。

这不一定是最佳做法,因为对于诸如添加之类的功能,最好有一个清晰的method在字段上执行此类操作,而不是直接从对象外部进行修改(如果您想了解更多信息)关于这个想法,它称为Encapsulation 。)您可以在该程序中使用的一种有用方法是AddProduct方法。

现在,我们需要这种方法做什么? 将一个product对象添加到GroceryList内部的list中。

因此,我们需要在GroceryList对象内部声明方法,如下所示。

public void AddProduct(product productToAdd)
{
    products.Add(productToAdd);
}

然后,当您要将产品添加到GroceryList对象时,可以在创建的list对象上调用AddProduct(productVariableHere)

您可以使GroceryList类具有产品属性

public class GroceryList
{
    public GroceryList()
    {
        Products = new List<Product>();
    }
    public List<Product> Products { get; set; }
}

然后添加产品可能看起来像

var bananas = new Product {Name = "banana", Quantity = 2};
var list = new GroceryList();
list.Products.Add(bananas);  

既然您说过您正在学习该语言:

  1. 您可能要考虑在GroceryList类上Add()方法。
  2. 将列表公开显示不是一个合理的设计,因为有人可以将其设置为null或删除项目等。
  3. 在需要公开它的非常特定的情况下,可以使用ReadOnlyCollection

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM