C#控制台程序中如何显示自定义类列表元素的索引
解决C#控制台程序中显示书籍列表索引的问题
嘿,作为C#新手能写出这样的代码已经很棒啦!关于显示书籍在列表中的整数索引,其实你手里已经有现成的变量能用——就是循环里的x呀!
问题分析
你用for循环从0开始遍历,每次循环添加的书籍正好对应列表里的第x个位置(索引从0开始),完全不需要额外新增变量或者类,直接用x就能拿到当前书籍的索引。
修改后的代码片段
把你原来的输出语句里的/*add index*/替换成x就搞定了,另外注意循环条件x <= s可能会多添加一本书(比如s是你要添加的数量,应该用x < s),我一起帮你调整了:
// 先让用户输入要添加的书籍数量 Console.WriteLine("请输入要添加的书籍数量:"); int s = Convert.ToInt32(Console.ReadLine()); List<Books> myBooks = new List<Books>(); for (int x = 0; x < s; x++) { Books newbook = new Books(); Console.WriteLine($"\n请输入第{x+1}本书的名称、描述和价格:\n"); newbook.name = Console.ReadLine(); newbook.description = Console.ReadLine(); newbook.price = Convert.ToDouble(Console.ReadLine()); myBooks.Add(newbook); // 这里直接用x作为索引显示 Console.WriteLine("{0} - {1}: {2}. 价格: {3}", x, newbook.name, newbook.description, newbook.price); }
额外说明
- 你提到
myBooks[x]返回[命名空间.类],这是因为默认的ToString()方法会输出类型的完全限定名,不过这里我们根本不需要用到myBooks[x],直接用循环变量x就足够了。 - 如果想让索引从1开始显示(更符合用户直觉),只需要把输出里的
x改成x+1就行,比如Console.WriteLine("{0} - {1}: {2}. 价格: {3}", x+1, ...)。
内容的提问来源于stack exchange,提问作者Chris J.
相关产品推荐
相关产品推荐

