当前位置: 首页 > 编程语言 > C#

遍历结构成员分享

时间:2023-04-10 15:14:25 C#

遍历结构成员假设我们有一个structStructmyStruct{intvar1;变量2;字符串var3;..是否可以使用foreach遍历结构的成员?我读过一些关于反射的内容,但我不确定如何在这里应用它。结构中大约有20个变量。我正在尝试从文件中读取值并尝试将它们分配给变量,但不想调用file.ReadLine()20次。我尝试遍历成员变量您可以使用Type.GetFields以与正常方式相同的方式应用反射:MyStructstructValue=newMyStruct(...);foreach(typeof(MyStruct)中的var字段。GetFields(BindingFlags.Instance|BindingFlags.NonPublic|BindingFlags.Public)){Console.WriteLine(“{0}={1}”,field.Name,field.GetValue(structValue));请注意,如果struct公开属性(几乎肯定应该公开),您可以使用Type.GetProperties来获取它们。(正如评论中所指出的那样,这首先可能不是一件好事,而且我通常对用户定义的结构有疑问,但我认为无论如何我都会包括实际答案......)编辑:现在它看起来你有兴趣设置字段,因为值类型的工作方式有点复杂(是的,这真的不应该是一个结构。)你想打包一次,将值设置为单个装箱实例,然后在最后拆箱:,希望你多加注意——objectboxed=newMyStruct();//调用FieldInfo.SetValue(boxed,newValue)等MyStructunboxed=(MyStruct)boxed;管理员删除。如需转载请注明出处: