我刚接触并且正在学习C#,我必须编写一个控制台应用程序,用户输入一个列表,比如书籍,但它是一个类列表。让我们说我有这个名为Books的课程。
Books
现在我创建一个类型为List<Books> myBooks = new List<Books>();
for (int x = 0; x <= s; x++)
{
Books newbook = new Books();
Console.WriteLine("\nPlease input the name, description and price of the book:\n");
newbook.name = Console.ReadLine();
newbook.description = Console.ReadLine();
newbook.price = Convert.ToDouble(Console.ReadLine());
myBooks.Add(newbook);
//Displaying what the user just entered
Console.WriteLine("{0} - {1}: {2}. Price: {3}", /*add index*/, newbook.name, newbook.description, newbook.price);
}
我要求用户添加书籍:
myBooks.Count()
正如你所看到的,我需要一些东西来显示这本书所在的列表的哪一部分,每本书(书籍)。
我尝试使用myBooks[x]
和[namespace.class]
,但是那些返回的值相同(因为列表的大小)或只是Server Template - 1afc0348-e853-4a0c-92db-06101168eb4d
。是否有解决方案(整数形式,也可以为零)并不涉及添加另一个类或创建另一个变量?
提前致谢。
答案 0 :(得分:2)
要获取最近添加的项目的索引,您可以使用(myBooks.Count() - 1)
。
或者,您可以在添加项目之前存储从myBooks.Count()
返回的值,该值将是添加项目的索引。
最后,在您的测试示例中,您还可以使用x
的值。
答案 1 :(得分:0)
如果你想要一个索引集合,只需使用一个数组:
int totalBooks = 25;
Books[] myBooks = new Books[totalBooks]; // 25 is the number of books an the indexes are from 0 to 24
for (int i = 0; i < totalBooks; i++)
{
Books newbook = new Books();
Console.WriteLine("\nPlease input the name, description and price of the book {0} :\n", (i+1));
newbook.name = Console.ReadLine();
newbook.description = Console.ReadLine();
newbook.price = Convert.ToDouble(Console.ReadLine());
myBooks[i] = newbook;
//Displaying what the user just entered
Console.WriteLine("{0} - {1}: {2}. Price: {3}", (i+1), newbook.name, newbook.description, newbook.price);
}
答案 2 :(得分:0)
您将在列表中使用IndexOf
方法
myBooks.Add(newbook);
//Displaying what the user just entered
Console.WriteLine("{0} - {1}: {2}. Price: {3}", myBooks.IndexOf(newbook),
newbook.name, newbook.description, newbook.price);
我不明白为什么myBooks.Count()
也不会起作用,因为您在列表的末尾插入,但最具描述性的方法是使用IndexOf
。
旁注:您的班级Books
描述了一本书;一般的做法是在一个单一的对象之后命名一个类。为简单起见,您可能希望将其重命名为Book
。