c# – 通过Struct成员迭代

前端之家收集整理的这篇文章主要介绍了c# – 通过Struct成员迭代前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让我们说我们有一个结构体
Struct myStruct
{
   int var1;
   int var2;
   string var3;
   .
   .
}

可能使用foreach可以遍历结构的成员吗?我已经反思了一些事情,但我不知道如何在这里申请.

There are about 20 variables in the struct. I am trying to read values
off a file and trying to assign them to the variables but don’t want
to call file.ReadLine() 20 times. I am trying to access the member
variables through a loop

解决方法

你应用反常的方法和正常情况一样,使用 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来获取这些属性.

(如评论中所述,这可能不是一件好事,首先,一般来说,我怀疑用户定义的结构,但我以为我会包括实际的答案…)

编辑:现在看起来你有兴趣设置字段,这是比较复杂的,因为值类型的工作方式(是的,这真的不应该是一个结构体.)你会想要一次,设置值单个盒装实例,然后在最后的unBox

object Boxed = new MyStruct();

// Call FieldInfo.SetValue(Boxed,newValue) etc

MyStruct unBoxed = (MyStruct) Boxed;

猜你在找的C#相关文章