繁体   English   中英

遍历Struct成员

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM