Так как мы говорим о частном поле, оно не влияет на пользователя Вашего класса.
, Но я рекомендую использовать подчеркивание для частного поля, потому что оно может сделать код легче понять, например:
private int foo;
public void SetFoo(int foo)
{
// you have to prefix the private field with "this."
this.foo = foo;
// imagine there's lots of code here,
// so you can't see the method signature
// when reading the following code, you can't be sure what foo is
// is it a private field, or a method-argument (or a local variable)??
if (foo == x)
{
..
}
}
В нашей команде, мы всегда используем префикс подчеркивания для частных полей. Таким образом при чтении некоторого кода, я могу очень легко определить частные поля и сказать им кроме местных жителей и аргументов. В некотором смысле, подчеркивание может пчела, рассматриваемая как краткая версия "этого".
Это потому, что это поля, а не свойства. Попробуйте:
public void EnumerateConstants() {
FieldInfo[] thisObjectProperties = thisObject.GetFields();
foreach (FieldInfo info in thisObjectProperties) {
if (info.IsLiteral) {
//Constant
}
}
}
Изменить: DataDink правильно, проще использовать IsLiteral
Объекты FieldInfo на самом деле имеют прямо на себе тонну логических значений «IsSomething»:
var m = new object();
foreach (var f in m.GetType().GetFields())
if (f.IsLiteral)
{
// stuff
}
Что в любом случае сэкономит вам крошечный объем кода по сравнению с проверкой атрибутов.