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

遍历结构?通过结构迭代分享

时间:2023-04-11 01:58:37 C#

?我希望能够在C#(.Net2.0)中迭代结构的值。这将在运行时完成,不知道结构中的可能值。我正在考虑使用反射将结构值添加到列表中,或者将结构转换为实现IEnumerable接口的数据结构。任何人都可以提供任何指示吗?在此先感谢您的帮助。真诚的,安迪。这到底是什么意思——结构中的各个字段?也许属性?如果是这样,Type.GetFields()或Type.GetProperties()是可行的方法。顺便说一句,你绝对确定你需要使用结构吗?这很少是C#中最好的设计决策,尤其是当结构包含多个值时。编辑:是的,似乎出于遗留原因正在使用结构。有一件事我之前没有提到:如果结构的字段不是公共的,您需要指定适当的BindingFlags(例如BindingFlags.Instance|BindingFlags.NonPublic)。在最简单的层面上,假设您想要遍历属性:PropertyInfo[]properties=myStructInstance.GetType().GetProperties();foreach(属性中的var属性){Console.WriteLine(property.GetValue(myStructInstance,null).ToString());我使用这样的东西:[StructLayout(LayoutKind.Sequential)]publicstructMY_STRUCT{publicuintaa;公共单位ab;公共单位ac;}MY_STRUCTpMS=newMY_STRUCT();FieldInfo[]字段=pMS。GetType().GetFields();foreach(varxInfoinfields)Console.WriteLine(xInfo.GetValue(pMS).ToString());为了使其适用于您必须使用反射的每个结构。如果您想声明一组具有此功能的结构,您可以让它们实现IEnumerable>并将GetEnumerator()定义为:yieldreturnnewKeyValuePair("Field1",Field1);yieldreturnnewKeyValuePair("Field2",Field2);//...等等使用反射的示例请参阅system.reflection.propertyinfo文档。以上就是C#学习教程:遍历结构体?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: