【发布时间】:2021-11-01 23:37:25
【问题描述】:
试图复习我的 C# 基础。如何打印列表中对象的值?我有一个列表,想打印出姓名和年龄来控制台。
我可以使用 foreach 循环轻松地打印出他们的全名和年龄,但我只是好奇如何通过 for 循环来做到这一点,这是我的代码,我失败了,因为 感谢您的意见和帮助
namespace Rextester
{
public class Person
{
public string Name {get;set;}
public int Age {get; set;}
}
public class Program
{
public static void Main(string[] args)
{
var People = new List<Person>
{
new Person{Name ="mary", Age= 60},
new Person{Name ="john", Age = 40},
new Person{Name ="peter", Age= 50},
new Person{Name ="jane", Age=30}
};
foreach(var obj in People)
{
Console.WriteLine(obj.Name + obj.Age);
}
for(int i=0; i<People.Count; i++)
{
var name = People[i].Name;
var age = People[i].Age;
Console.WriteLine(name[i]); // result is char in each index of string m, o ,t, e instead of name - mary, john, peter, jane
Console.WriteLine(age[i]);// error: Cannot apply indexing with [] to an expression of type 'int'
}
}
}
}
【问题讨论】:
-
name应该是一个字符串,因此您可以索引每个字母(字符) - 如果这是您想要的。 Age 是一个不能被索引的 int,因为没有有意义的组件元素。 -
错误说明了一切。
var age= People[i].Age将age设置为int。因此,如果您想打印age,只需使用Console.WriteLine(age)。同名。这不会对前几项立即引发错误,因为您可以通过索引[i]访问字符串的各个字符。但是一旦你的i大于名字的长度,这也会抛出错误 -
@ŇɏssaPøngjǣrdenlarp 谢谢!这是有道理的:)) 现在我明白了
-
@derpirscher 谢谢!所以我想多了。就是这么简单......谢谢
标签: c# list for-loop object arraylist