У меня многолетний опыт работы в C++ и Java, но я новичок в С#.
Недавно, когда я читал книгу на С#, они рассматривали следующее как пространство имен, которое я нашел его странным. Согласно моим знаниям в C++, это на самом деле предпроцессорные pre-processor directives
.
using System; //A book called these as namespace
using System.Collections.Generic; //A book called these as namespace
using System.Text; //A book called these as namespace
И, согласно веб-сайту msdn, вышесказанное известно как directives
.
Если указанное выше namespace
вызовов
Как насчет следующего?
namespace My_First_Program //This is also call namespace
{
class Program
{
static void Main()
}
}
Поэтому мой первый вопрос: что именно является пространством имен? Правильно ли я звоню using System;
как pre-processor directive
?
Мой второй вопрос: могу ли я предположить, что namespace My_First_Program
работает подобно using namespace std
в C++?
Следующий оператор определяет пространство имен:
namespace My_First_Program {
...
}
Любой код в фигурных скобках находится в (My_First_Program
) пространстве имен My_First_Program
.
С using
"импорта" пространств имен ОТЧЕТНОСТИ, так что вы не должны использовать их полное имя.
Оператор 'using' не является предпроцессорной директивой. Вы можете найти их здесь.
Нет, С# с using
не директива препроцессора.
В С# они почти идентичны C++
using System;
будет иметь аналогичное намерение
using namespace std;
или в Java
import java.util.*;
а именно, что символы в пространстве имен System
теперь находятся в области видимости, при условии, что в этом проекте также ссылаются необходимые сборки. Без using
всего кода, доступ к System
должен будет квалифицировать полное пространство имен в качестве префикса, например System.DateTime
. Вы также можете использовать псевдоним пространства имен с using
, например, если результат добавления нескольких операторов using
вносит в объем 2 или более символов с тем же именем, например (using m=My.Very.Long.NameSpace
)
По аналогии:
namespace foo
{
}
также имеет тот же эффект, что и в C++
- это помещает все символы, определенные в блоке, как в предоставленном пространстве имен, foo
. Как и в случае с другими языками, это делается для предотвращения загромождения глобального пространства имен. Это очень похоже на ключевое слово package
в файлах Java. Теоретически в C#
вы можете иметь несколько блоков namespace
в файле, хотя это было бы необычной и, вероятно, плохой практикой для этого.
Что именно является пространством имен? Правильно ли я звоню с помощью System; как предпроцессорная директива?
Нет, using System;
просто включает пространство имен, чтобы вы могли обращаться к классам System
без указания имени. Это не имеет ничего общего с директивами препроцессора на C#
.
В этом случае System
является пространством имен, но перед тем, как вы System
пространство имен System
с помощью директивы using, вы должны добавить ссылку на System.dll
. Файлы DLL
представляют собой сборки, которые могут содержать одно или несколько пространств имен.
Можно ли предположить, что пространство имен My_First_Program работает аналогично использованию пространства имен std в C++?
Нет, namespace My_First_Program
- это объявление пространства имен. using namespace std
аналогично использованию директивы в C#
Использование - это то же самое, что и импорт в java. Ваша книга ссылается на него как пространство имен, поскольку используется импорт пространства имен.
И да, насколько мне известно, использование пространства имен std в c++ такое же, как в С# с использованием системы;