如何在列表中显示元素的索引

时间:2018-01-25 15:19:42

标签: c#

我刚接触并且正在学习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。是否有解决方案(整数形式,也可以为零)并不涉及添加另一个类或创建另一个变量?

提前致谢。

3 个答案:

答案 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