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,但您不必使用列表来调整其大小。