C# .GetType().GetProperties()以不同的顺序返回属性

C# .GetType().GetProperties()以不同的顺序返回属性,c#,properties,system.reflection,getproperties,C#,Properties,System.reflection,Getproperties,我想检查我们的配置文件,看看它是否与创建新配置文件相同。此方法称为GetConfig() 几个小时后,我注意到如果我保存配置文件,然后调用GetConfig,它就会工作,但是如果我关闭程序,启动它,加载配置文件,然后调用GetConfig(),它会以不同的顺序返回属性 下面您可以看到我的意思,propertyb是类的对象。有3个以上的属性,但我只想举一个小例子: - - - - - - - - -- - - - - - -- S A V E C O N F I G - - - - -

我想检查我们的配置文件,看看它是否与创建新配置文件相同。此方法称为GetConfig()

几个小时后,我注意到如果我保存配置文件,然后调用GetConfig,它就会工作,但是如果我关闭程序,启动它,加载配置文件,然后调用GetConfig(),它会以不同的顺序返回属性

下面您可以看到我的意思,propertyb是类的对象。有3个以上的属性,但我只想举一个小例子:

- - - - - - - - -- - - - - - --   S A V E   C O N F I G
 - - - - - - -- -   G E T   C O N F I G
1 Field: a
1 Field: b
1 Field: c
以及它必须保存的下一个配置对象

1 Field: a
1 Field: b
1 Field: c
当我在同一个实例上加载配置时

 - - - -- - - - - - - - - -- -  A R E   E Q U A L
 - - - - - - -- -   G E T   C O N F I G
1 Field: a
1 Field: b
1 Field: c
下一个配置对象

1 Field: a
1 Field: b
1 Field: c
但是,当我重新启动程序时加载配置时,我得到以下结果:

- - - -- - - - - - - - - -- -  A R E   E Q U A L
 - - - - - - -- -   G E T   C O N F I G
1 Field: a
1 Field: b   <-- correct
1 Field: c

非常感谢您的帮助。

您不能对
类型的返回值的顺序做出任何假设。GetProperties
,请参见下面的说明:

GetProperties方法不返回特定类型中的属性 顺序,如字母顺序或声明顺序。您的代码不能 取决于返回属性的顺序,因为 顺序各不相同


如果您想要一个特定的顺序,您应该对返回的集合进行代码排序。

按字母顺序排列字段名?@SHEePYTaGGeRNeP您应该将此答案作为已接受答案。
1 Field: a
1 Field: c
1 Field: b   <-- should be 2nd.
foreach (var field in channel.GetType().GetProperties())
                    {
                        Console.WriteLine(channel.ChannelNumber + " Field: " + field.Name);