Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2017, 20:29   #1
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
Восклицание Объявление пространств имен в 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 пример демонстрирует данное правило таким образом, что если снять комментарии с импорта ПИ - после их объявления то будет ошибка.
BadCats вне форума Ответить с цитированием
Старый 14.05.2017, 10:43   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

стандарт таков что using идут в начале неймспейса/файла.

сделано для того чтоб не было такого что using гдето дальше по коду влияет на предыдущий.(как раз потому что код идет по дереву, а не последовательно)
Цитата:
это компилируемый язык а не интерпретируемый, а значит код не читается строчка за строчкой а строится синтаксическое дерево.
С/С++ тож не интерпретируемые
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.05.2017, 14:30   #3
BadCats
Пользователь
 
Аватар для BadCats
 
Регистрация: 31.01.2016
Сообщений: 67
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
стандарт таков что using идут в начале неймспейса/файла.

сделано для того чтоб не было такого что using гдето дальше по коду влияет на предыдущий.(как раз потому что код идет по дереву, а не последовательно)
С/С++ тож не интерпретируемые
Спасибо!
BadCats вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление классов или пространств имён Thez Общие вопросы C/C++ 1 12.03.2015 15:40
дружественность классов из разных пространств имен Antej Общие вопросы C/C++ 3 19.09.2013 19:59
Методы расширения, проблема из за разных пространств имен mike_tihomirov C# (си шарп) 2 25.06.2012 15:52
Объявление пространства имен T@Rak0t Общие вопросы C/C++ 5 21.09.2010 09:58
Генерация имен Napste® PHP 8 07.05.2010 20:33