我是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);
}
当我想创建一个方法来完成我对最后一段代码所做的事情时,问题就来了,我的想法是创建一个方法并将该对象(在本例中为角色)传递给该方法并在内部执行循环.我所做的是:
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 循环所做的事情,以便能够接收对象、迭代并打印每个项目。
谢谢!引起大家的注意。
最佳答案
我看到两个选项
我认为最好的选择是创建类 Person
。使用创建的类型,如果您在编写属性名称时输入错误,编译器将在编译期间显示错误,稍后将尝试重命名它。
public class Person
{
public string Nombre { get: set; }
public string Apellido { get: set; }
public string Edad { get: set; }
}
static void showPersonas(Person[] personsList)
{
foreach (var algo in personsList)
{
Console.WriteLine(algo.nombre);
}
}
另一个选项:dynamic
关键字。
但要小心 - 使用 dynamic
关键字可以将类型检查移至运行时。这将在运行时抛出与您现在在编译时遇到的相同的异常。
static void showPersonas(dynamic[] personsList)
{
for (int i = 0; i < personsList.Length; i++)
{
var algo = personsList[i];
Console.WriteLine(algo.nombre);
}
}
关于c# - 将匿名类数组传递给方法并循环 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40494655/