Naming the members of an inner class the same as the static members of its enclosing class is possible but generally considered a bad practice.
That’s because maintainers may be confused about which members are being used in a given context. Instead the inner class member should be given
distinct and descriptive name, and all references to it should be updated accordingly.
class Outer
{
public static int A;
public class Inner
{
public int A; // Noncompliant
public int MyProp
{
get => A; // Returns inner A. Was that intended?
}
}
}
Here’s an example of compliant code after renaming the inner class member, this way the property will return the Outer
A:
class Outer
{
public static int A;
public class Inner
{
public int B; // Compliant
public int MyProp
{
get => A; // Returns outer A
}
}
}
Or if you want to reference the Inner
A field:
class Outer
{
public static int B;
public class Inner
{
public int A; // Compliant
public int MyProp
{
get => A; // Returns inner A
}
}
}