我是C#的新手,我目前正致力于一项对我来说没有意义的任务。我需要朝正确的方向迈进。
作业:
我需要创建一个名为grocerylist的控制台应用程序。此购物清单包含一个名为GroceryList的类。此类包含一个实例变量产品,它是一个数组。
该数组包含product类型的项目。
类产品具有字符串名称和int数量作为属性。产品类是抽象的,有2个子类叫做fresh和herbs。
我需要证明我可以将项目添加到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
{
}
}
}
答案 0 :(得分:1)
您创建的GroceryList
类需要在代码中实例化(声明),以便您可以在其中使用List<product>
。正如您将fresh1
声明为product.fresh
对象一样,您必须将对象声明为GroceryList
。
因此,您可以在代码的开头声明GroceryList list = new GroceryList()
。然后,您需要将商品添加到products
的{{1}}字段中。
有两种方法可以做到这一点。一种方法是直接访问类内的GroceryList list
对象。
为此,您需要创建list
字段list
,以便可以从对象外部访问它。要将其声明为公开,请在字段声明的前面加上public
关键字。
这不一定是这样做的最佳实践,就像添加这样的函数一样,最好有一个明确的public
在字段上执行这样的操作,而不是直接从对象外部修改它们(如果您想了解有关此想法的更多信息,请将其称为Encapsulation。)您可以使用此方案的有用方法是method
方法。
现在,我们需要这种方法做什么?将AddProduct
对象添加到我们product
内的list
。
因此,我们需要在GroceryList
对象内部声明方法,如下所示。
GroceryList
然后,当您想要将产品添加到public void AddProduct(product productToAdd)
{
products.Add(productToAdd);
}
对象时,您可以在您创建的GroceryList
对象上调用AddProduct(productVariableHere)
。
答案 1 :(得分:0)
您可以让您的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);
答案 2 :(得分:0)
既然你说你正在学习这门语言:
Add()
类上添加GroceryList
方法。ReadOnlyCollection
。