[英]Iterating through Struct members
可以说我们有一个结构
Struct myStruct
{
int var1;
int var2;
string var3;
.
.
}
是否可以通过使用foreach来遍历结构的成员? 我已经读过一些东西,但是我不确定如何在这里应用它。
结构中大约有20个变量。 我正在尝试从文件中读取值,并尝试将它们分配给变量,但不想调用file.ReadLine()20次。 我正在尝试通过循环访问成员变量
您可以使用Type.GetFields
以与通常相同的方式应用反射:
MyStruct structValue = new MyStruct(...);
foreach (var field in typeof(MyStruct).GetFields(BindingFlags.Instance |
BindingFlags.NonPublic |
BindingFlags.Public))
{
Console.WriteLine("{0} = {1}", field.Name, field.GetValue(structValue));
}
请注意,如果该结构公开了属性(几乎可以肯定应该如此),则可以使用Type.GetProperties
来获取这些属性。
(正如评论中指出的那样,这在一开始可能并不是一件好事,总的来说,我对用户定义的结构感到怀疑,但我认为无论如何我都应该包括实际的答案...)
编辑:现在看来您对设置字段感兴趣,由于值类型的工作方式,它稍微复杂了一些(是的,这实际上不应该是一个结构。)您将需要装箱一次 ,在单个装箱的实例,然后在最后取消装箱:
object boxed = new MyStruct();
// Call FieldInfo.SetValue(boxed, newValue) etc
MyStruct unboxed = (MyStruct) boxed;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.