如何在我的ArrayList c#控制台中显示项目

本文关键字:控制台 显示 项目 ArrayList 我的 | 更新日期: 2023-09-27 18:06:58

好的,我正在学习控制台使用c#。我知道ArrayList的基本知识,即添加和删除,但我不知道如何显示对象。下面是我的代码示例,显示我在数组列表中添加了一些项目。我想通过插入项目代码来显示项目的每个细节。

ArrayList arr = new ArrayList();
Console.WriteLine("'n'tADD NEW ITEM'n'nPlease enter item details");
Console.Write("Item code: ");
arr.Add = Console.ReadLine();
Console.Write("Item description: ");
arr.Add = Console.ReadLine();
Console.Write("Price: RM");
arr.Add = double.Parse(Console.ReadLine());
Console.Write("Quantity: ");
arr.Add = int.Parse(Console.ReadLine());
Console.WriteLine("FIND ITEM");
Console.Write("Item code: ");

好吧,我迷路了,不知道我的最后一个代码。

如何在我的ArrayList c#控制台中显示项目

在这种情况下,您应该创建一个类来表示您的项目。这样的:

public class Item
{
    public int Code { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; } 
    public int Quantity { get; set; }
}

使用一个类型化的List来保存项目。它的工作方式类似于ArrayList,但是是类型化的。下面是代码:

List<Item> listOfItems = new List<Item>();
//we will create 10 items.
for (int i = 0; i < 10; i++)
{
    //instantiate the object
    Item item = new Item();
    Console.WriteLine("'n'tADD NEW ITEM'n'nPlease enter item details");
    Console.Write("Item code: ");
    item.Code = Console.ReadLine();
    Console.Write("Item description: ");
    item.Description = Console.ReadLine();
    Console.Write("Price: RM");
    item.Price = decimal.Parse(Console.ReadLine());
    Console.Write("Quantity: ");
    item.Quantity = int.Parse(Console.ReadLine());
    //we must add this item to our list
    listOfItems.Add(item);
}

查找项目:

Console.WriteLine("FIND ITEM");
Console.Write("Item code: ");
int selectedCode = int.Parse(Console.ReadLine());
//use LINQ to search for the item
Item selectedItem = listOfItems.Where(i => i.Code == selectedCode).FirstOrDefault();
//check if an item was found
if (selectedItem != null)
{
   Console.WriteLine("Item found!");
   //print the item
   Console.WriteLine("Code: {0}", selectedItem.Code);
   Console.WriteLine("Description: {0}", selectedItem.Description);
   Console.WriteLine("Price: {0}", selectedItem.Price.ToString("c"));
   Console.WriteLine("Quanitty: {0}", selectedItem.Quantity);
}

未经测试的代码,但应该工作良好!

迭代你的数组与foreach?

foreach ( Object obj in arr )
      Console.Write( "{0}", obj );
      Console.WriteLine();
}

在这里,您将每个项目属性作为元素添加到数组列表中。相反,创建一个具有所有项目属性的类,然后将其添加回数组列表。然后我们可以通过数组列表过滤搜索。

static class  Program
{
    static void Main(string[] args)
    {
        ArrayList mainList = new ArrayList();
        string enterMore="yes";
        while (enterMore == "yes" || enterMore == "YES")
        {
            ItemObject item = new ItemObject();
            Console.Write("Item code: ");
            item.itemCode = Console.ReadLine();
            Console.Write("Item description: ");
            item.description = Console.ReadLine();
            Console.Write("Price: RM");
            item.price = double.Parse(Console.ReadLine());
            Console.Write("Quantity: ");
            item.quantity = int.Parse(Console.ReadLine());
            mainList.Add(item);
            Console.Write("{Type 'yes' to enter more} Want to enter more?");
            enterMore = Console.ReadLine();
        }

        string searchMore = "yes";
        while (searchMore == "yes" || searchMore == "YES")
        {
            Console.Write("Enter item code to SEARCH?  ");
            string itemCode = Console.ReadLine();
            //Arraylist stores evarything as an object type. so we are casting object into itemObject
            ArrayList searchResults = new ArrayList(mainList.Cast<ItemObject>()
                                             .Where(d => d.itemCode == itemCode)
                                             .ToList());

            Console.Write("Search Results: ");
            foreach(Object item in searchResults){
                ItemObject obj = (ItemObject)item;
                Console.WriteLine(obj.itemCode);
                Console.WriteLine(obj.description);
                Console.WriteLine();
            }
            Console.Write("{Type 'yes' to search more} Want to search more?");
            searchMore = Console.ReadLine();
        }

    }
}
class ItemObject
{
    public string itemCode { get; set; }
    public string description { get; set; }
    public double price { get; set; }
    public float quantity { get; set; }
}