我是c#中的新手,想问你一些问题,请帮忙。将匿名类的数组传递给方法和循环c#
我创建了一个变量,3人里面使用这样的匿名类:
var personas = new[] {
new {nombre = "Guillermo", apellido = "Pérez", edad = 37}
, new {nombre = "Juan", apellido = "García", edad = 27}
, new {nombre = "Maria", apellido = "Rosina", edad = 47}
};
现在,我试图遍历每个这些项目,我做(用下面的代码)
for (int i = 0; i < personas.Length; i++)
{
var persona = personas[i];
Console.WriteLine("{0} {1} tiene {2} años.", persona.nombre, persona.apellido, persona.edad);
}
当我想创建一个方法来完成我对最后一段代码所做的工作时,问题就出现了,它的想法是创建一个方法并将该对象(在本例中为personas)传递给方法并执行内部循环。我所做的是这样的:
showPersonas(personas);
static void showPersonas(object[] personsList) {
for (int i = 0; i < personsList.Length; i++) {
var algo = personsList[i];
Console.WriteLine(personsList[i].nombre); ----> ERROR!!
}
}
我想怎么做的方法是做什么我做在for循环,才能够接收对象,迭代并打印出每个项目。
谢谢!为你所有的关注。
你有没有创建具体类而不是匿名对象的参数?看来这将全部通过简单的类实现来解决。你的方法名已经描述了你应该接受什么类型的对象,所以我个人认为匿名类型不是这里的一种方式。 –
考虑到自定义类将少于10行代码,我认为没有理由通过使用'dynamic'或reflection来牺牲编译型安全性。创建一个类并将其用作数组(或者'IEnumerable <>')作为输入参数的类型。 –
谢谢!是的,原因是我正在学习数组,所以他们确实使用了一个匿名类数组的例子......如果我在同一代码块中执行循环,它会运行良好,但如果我尝试创建一个循环的方法,然后问题开始,因为我不知道这些类是什么... :-( –