include::../why.adoc[]

[source,csharp,diff-id=1,diff-type=noncompliant]
----
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:

[source,csharp,diff-id=1,diff-type=compliant]
----
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:

[source,csharp]
----
class Outer
{
  public static int B;

  public class Inner
  {
    public int A; // Compliant

    public int MyProp
    {
      get => A; // Returns inner A
    }
  }
}
----

== Resources

=== Documentation

* https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions[Common Coding Conventions]
* https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/nested-types[Nested Types]

include::../rspecator.adoc[]