#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 => 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);
}
}
и это класс Program
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.
Пожалуйста, дайте мне любой пример или любую ссылку, чтобы документировать, как это решить.Спасибо!
Комментарии:
1. Вам действительно нужен массив ? В большинстве случаев вместо этого будет использоваться
List<Product>
. Тогда вы можете просто использовать List.Add () вместо того, чтобы изменять размер и копировать свой массив всякий раз, когда это необходимо изменить…2. Я бы предпочел использовать массив, потому что это указано в указателе проблемы. Спасибо за решение!
3. @Idle_Mind Ну, да, хотя это добавляет много удобства, но
List<T>
по сути, это реализация массива (я имею в виду реализацию динамического массива)4. Это немного не по теме и больше похоже на «обзор кода», но для дальнейшего использования вы можете поместить » n» (без кавычек) в начале или конце ваших параметров для консоли. WriteLine(), чтобы получить дополнительные строки и сократить беспорядок.
5. @Rahul верно, но вам не обязательно изменять его размер самостоятельно с помощью списка.
Ответ №1:
Я бы посоветовал вам использовать список, потому что у вас есть метод Add для добавления новых продуктов. Чтобы проверить, существует ли продукт, вы можете использовать любое расширение IEnumerable в Linq:
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,
...
};
...
}
Ответ №2:
public class Product
{
public long Id {get; set;}
public String Name {get; set;}
public String InternCode {get; set;}
public String producer {get; set;}
public overrides string ToString()
{
return $"Products: {Id} {Name}[{InternCode}] {Producer}";
}
}
public static void Main(string[] args)
{
var products = new List<Product>();
bool again = true;
while(again)
{
var product = new Product();
Console.WriteLine("The Id for the first product is:");
product.Id = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("The name of the first product is:");
product.Name = Console.ReadLine();
Console.WriteLine("The Intern Code is:");
product.InternCode = Console.ReadLine();
Console.WriteLine("The producer is:");
product.Producer = Console.ReadLine();
products.Add(product);
Console.WriteLine("nEnter another product (y/n)?");
again = (Console.ReadKey(true).Key.ToString().ToLower() == "y");
}
Console.WriteLine("nThe products are:");
foreach(var product in products)
{
Console.WriteLine(product);
}
Console.ReadKey(true);
}