我是 C# 和 .NET 的新手。我想知道如何遍历我正在创建的对象。
public ActionResult<Person> Get(int id)
{
var pipe = new searchClient();
var data = new[] {
new Person { id=1, Name="Ana", edad="24" },
new Person { id=2, Name="Joseph", edad="20" }
};
var looking = pipe.obtenerCliente(id, data);
return Ok(
looking
);
}
public class searchClient
{
public Object obtenerCliente(int id, Array data)
{
foreach(var d in data) {
Console.WriteLine(d); // Cuando recorro la matriz, me sale el contexto de los objetos
}
return data;
}
}
public class Person
{
public string Name { get; set; }
public string edad { get; set; }
public int id { get; set; }
}
当我使用 foreach 遍历数组时,在控制台中它返回 Person 对象的上下文,我不知道如何继续遍历
事实上,您使用没有关于元素类型的信息的类型声明例程的参数,例如
Array
,如果您想获取数组中每个对象的成员和在我看来,代码更容易出错,因为如果我们使用严格类型,我们会跳过编译器为我们所做的验证。保留例程的签名,您必须将迭代器元素的变量类型声明为
Persona
:或者,您可以保留隐式输入并直接应用强制转换广告:
这并不妨碍您编写将带有类型元素的数组传递
Car
给该例程的代码Person
,因为我们已经剥夺了编译器检查元素类型的能力。如果您更改签名,您可以收到一组人员,这使事情变得更简单,并通过编译器验证使我们保持安全:
由于现在为 的元素定义了一个类型
data
,因此即使是隐式类型也可以工作:当你这样做时,你会发生什么:
您是在告诉 C# 打印该对象。由于该对象是从对象继承的,即使您给了它属性,它也不知道应该如何打印它。
这是因为ToString 方法,如文档所述,打印对象的全名,这不是您想要的,因为您希望它打印其内容。
为此,在这里,您有两个选择:
为每个变量写入:
覆盖类中的 ToString 方法,使其知道如何打印
在这种情况下,在您的 Person 类中,您应该执行以下操作:
这样,当你这样做时:
它将打印姓名、年龄和身份证...
成绩:
var d in data
,而是做person d in data