【发布时间】:2013-04-09 18:05:48
【问题描述】:
是否可以通过索引访问属性?
以 Person 类为例,它可以具有属性“BirthNo”和“Gender”。如果我想访问 BirthNo 的值,是否可以以任何方式写 p.[0].Value 还是必须写 person.BirthNo.Value?
Person p = new Person
//I have this:
string birthNo = p.BirthNo.Value;
//I want this:
string birthNo = p.[0].Value;
【问题讨论】:
-
它们不是属性,而是属性。要通过索引获取它们,您必须使用 Reflection,伪代码为:
string birthNo = (string)p.GetType().GetProperties()[0].GetValue(p, null);. -
否;你为什么要?我怀疑有一种更好的方法来做你想做的事情,它不涉及按索引访问属性。
-
@Adriano 你应该把你的评论作为答案
-
@voo 懒得做它并用适当的例子和解释来扩展它...... :)
-
@Adriano 最好不要使用它:“GetProperties 方法不会以特定顺序返回属性,例如字母顺序或声明顺序。您的代码不得依赖于返回属性的顺序,因为顺序不同。”来自msdn.microsoft.com/en-us/library/aky14axb.aspx 的文档
标签: c# class attributes indexing