c# – 通过Struct成员迭代
让我们说我们有一个结构体
Struct myStruct { int var1; int var2; string var3; . . } 可能使用foreach可以遍历结构的成员吗?我已经反思了一些事情,但我不知道如何在这里申请.
解决方法
你应用反常的方法和正常情况一样,使用
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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |