C# 我想在C中显示一些使用对象数组的产品#

C# 我想在C中显示一些使用对象数组的产品#,c#,arrayobject,C#,Arrayobject,我有一节课 public class Product { private long id; private String name; private String internCode; private String producer;// public long Id { get => id; set => id = value; } public string Name { get => name; set

我有一节课

public class Product
{
    private long id;   
    private String name;  
    private String internCode;  
    private String producer;// 

    public long Id { get => id; set => id = value; }
    public string Name { get => name; set => name = value; }
    public string InternCode { get => internCode; set => internCode = value; }
    public string Producer { get => producer; set => producer = value; }

    public void display()
    {
        Console.WriteLine("Products: " +Id+"  "+Name + "[" +InternCode + "] " + Producer);
    }
}
这是程序课

 public static void Main(string[] args)
    {
        Product prod1 = new Product();
        Product prod2 = new Product();
        Console.WriteLine("The Id for the first product is:");
        prod1.Id = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("The name of the first product is:");
        prod1.Name = Console.ReadLine();
        Console.WriteLine("The Intern Code is:");
        prod1.InternCode = Console.ReadLine();
        Console.WriteLine("The producer is:");
        prod1.Producer = Console.ReadLine();

        Console.WriteLine();
        Console.WriteLine("The Id for the second product is:");
        prod2.Id = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("The name for the second product is:");
        prod2.Name = Console.ReadLine();
        while (prod2.Name == prod1.Name)
        {
            Console.WriteLine("This product has already been introduced. Please introduce a new product:");
            prod2.Name = Console.ReadLine();
        }
        Console.WriteLine("The intern code is:");
        prod2.InternCode = Console.ReadLine();
        Console.WriteLine("The producer is:");
        prod2.Producer = Console.ReadLine();


        Console.WriteLine("The products are:");
        Console.WriteLine();
        prod1.display();
        Console.WriteLine();
        prod2.display();
        Console.WriteLine();
        Console.ReadKey();            
    }
我希望通过用户输入读取产品,并使用对象数组Product[]array1=new Product[]显示它们,而不是使用prod1和prod2对象。
请给我任何例子或任何链接来记录我如何解决这个问题。谢谢

我建议您使用列表,因为您有添加新产品的方法。要检查产品是否存在,可以使用Linq的IEnumerable的任意扩展:

var products = new List<Product>();
...
while (!lastuserinput.Equals("exit"))
{    
    var productName = Console.ReadLine(); 
    if (products.Any(product=>product.Name.Equals(productName))
    {
       Console.WriteLine("product already exists");
       continue;
    }
    ...
    productList.Add(new Product
    {
        ...
        Name = productName,
        ...
    };
...
}
var产品=新列表();
...
而(!lastuserinput.Equals(“exit”))
{    
var productName=Console.ReadLine();
if(products.Any(product=>product.Name.Equals(productName))
{
Console.WriteLine(“产品已存在”);
继续;
}
...
productList.Add(新产品)
{
...
Name=productName,
...
};
...
}

我建议您使用列表,因为您有添加新产品的Add方法。要检查产品是否存在,您可以使用Linq的IEnumerable的任意扩展:

var products = new List<Product>();
...
while (!lastuserinput.Equals("exit"))
{    
    var productName = Console.ReadLine(); 
    if (products.Any(product=>product.Name.Equals(productName))
    {
       Console.WriteLine("product already exists");
       continue;
    }
    ...
    productList.Add(new Product
    {
        ...
        Name = productName,
        ...
    };
...
}
var产品=新列表();
...
而(!lastuserinput.Equals(“exit”))
{    
var productName=Console.ReadLine();
if(products.Any(product=>product.Name.Equals(productName))
{
Console.WriteLine(“产品已存在”);
继续;
}
...
productList.Add(新产品)
{
...
Name=productName,
...
};
...
}
公共类产品
{
公共长Id{get;set;}
公共字符串名称{get;set;}
公共字符串代码{get;set;}
公共字符串生成器{get;set;}
公共重写字符串ToString()
{
返回$“产品:{Id}{Name}[{InternCode}]{Producer}”;
}
}
公共静态void Main(字符串[]args)
{
var products=新列表();
布尔再次=真;
同时(再次)
{
var product=新产品();
Console.WriteLine(“第一个产品的Id是:”);
product.Id=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“第一个产品的名称是:”);
product.Name=Console.ReadLine();
Console.WriteLine(“实习生代码为:”);
product.InternCode=Console.ReadLine();
Console.WriteLine(“制作人是:”);
product.Producer=Console.ReadLine();
产品。添加(产品);
Console.WriteLine(“\n输入另一个产品(y/n)?”;
再次=(Console.ReadKey(true.Key.ToString().ToLower()=“y”);
}
Console.WriteLine(“\n产品为:”);
foreach(产品中的var产品)
{
控制台写入线(产品);
}
Console.ReadKey(true);
}
公共类产品
{
公共长Id{get;set;}
公共字符串名称{get;set;}
公共字符串代码{get;set;}
公共字符串生成器{get;set;}
公共重写字符串ToString()
{
返回$“产品:{Id}{Name}[{InternCode}]{Producer}”;
}
}
公共静态void Main(字符串[]args)
{
var products=新列表();
布尔再次=真;
同时(再次)
{
var product=新产品();
Console.WriteLine(“第一个产品的Id是:”);
product.Id=Convert.ToInt32(Console.ReadLine());
Console.WriteLine(“第一个产品的名称是:”);
product.Name=Console.ReadLine();
Console.WriteLine(“实习生代码为:”);
product.InternCode=Console.ReadLine();
Console.WriteLine(“制作人是:”);
product.Producer=Console.ReadLine();
产品。添加(产品);
Console.WriteLine(“\n输入另一个产品(y/n)?”;
再次=(Console.ReadKey(true.Key.ToString().ToLower()=“y”);
}
Console.WriteLine(“\n产品为:”);
foreach(产品中的var产品)
{
控制台写入线(产品);
}
Console.ReadKey(true);
}

你真的需要数组吗?在大多数情况下,会使用
列表
来代替。然后你可以简单地使用,而不必在需要调整数组大小时调整和复制数组…我更喜欢使用数组,因为它在问题指示中指出。谢谢你的解决方案!@Idle\u Mind是的,尽管它增加了一个很好的de虽然方便,但本质上是一个数组实现(我指的是一个动态数组实现)。这有点离题,更多的是“代码检查”,但为了便于将来参考,您可以在Console.WriteLine()的参数开头或结尾加上“\n”(不带引号)获取额外的行,减少混乱。@Rahul-true,但您不必使用列表来调整大小。您真的需要数组吗?在大多数情况下,将使用
列表
。然后您可以简单地使用,而无需在需要调整数组大小时调整和复制数组……我更喜欢使用数组,因为它在问题指示中表示。感谢您提供的解决方案!@Idle\u Mind Well是的,虽然它增加了很多便利,但是
List
本质上是一个数组实现(我指的是动态数组实现)。这有点离题,更多的是“代码审查”,但为了将来的参考,您可以在下面加上“\n”(不带引号)在Console.WriteLine()参数的开始或结束处获取额外的行,并减少混乱。@Rahul true,但您不必使用列表来调整其大小。