Задать вопрос
BadCats
@BadCats

Объявление пространств имен в c#?

Всем привет. Почему в данном примере:
using NamespaceA.NamespaceB.NamespaceC;

namespace NamespaceA
{
    namespace NamespaceB
    {
        namespace NamespaceC
        {
            class MyClassC { }
        }

        class MyClassB { }
    }

    class MyClassA { }
}

// В данном месте импорт недопустим.
// Импорт допустим или в теле namespace, или перед всеми другими пространствами имен.

//using NamespaceA;
//using NamespaceA.NamespaceB;
//using NamespaceA.NamespaceB.NamespaceC;

namespace Namespaces
{
    class Program
    {
        static void Main()
        {
            MyClassA myA = new MyClassA();
            MyClassB myB = new MyClassB();
            MyClassC myC = new MyClassC();
        }
    }
}

Который демонстрирует правило :


// В данном месте импорт недопустим.
// Импорт допустим или в теле namespace, или перед всеми другими пространствами имен.

так вот, у меня вопрос к данному правилу. Ведь c# - это компилируемый язык а не интерпретируемый, а значит код не читается строчка за строчкой а строится синтаксическое дерево. И поэтому мне интересно не все ли равно где объявлять пространства имен?
P,s пример демонстрирует данное правило таким образом, что если снять комментарии с импорта ПИ - после их объявления то будет ошибка.
  • Вопрос задан
  • 212 просмотров
Подписаться 2 Оценить 5 комментариев
Решения вопроса 1
Ведь c# - это компилируемый язык а не интерпретируемый, а значит код не читается строчка за строчкой а строится синтаксическое дерево. И поэтому мне интересно не все ли равно где объявлять пространства имен?

Думаю так сделано чтобы открыв файл, можно было сразу понять, какие пространства имён используются. Потому что выискивать все using'и по всему файлу - такое себе развлечение, даже если бы язык это позволял, за такое нужно было бы бить по рукам.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы