Look at the following [LINQPad](http://linqpad.net) program:

```
void Main() { }

[TestAttribute(Name)]
public class Test
{
    public const string Name = "Test";
}

[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
[Serializable]
public class TestAttribute : Attribute
{
    public TestAttribute(string dummy)
    {
    }
}

```

This compiles without a hitch. Why?

Specifically:

```
[TestAttribute(Name)]
public class Test
{
    public const string Name = "Test";

```

Why don't I have to write this:

```
               vvvvv
[TestAttribute(Test.Name)]
public class Test
{
    public const string Name = "Test";

```

Is the attribute declaration deemed to be "inside" the type, and thus in scope?