Подтвердить что ты не робот

Почему у С# нет файлов заголовков? Будет ли пространство имен заботиться обо всем?

Я начинающий программист, может ли кто-нибудь четко рассказать об использовании файлов заголовков и пространств имен в С#?

Потому что в С++ я использовал файлы ******.h для чтения функций библиотеки. И когда я увидел некоторые примеры программ на С#, они пропали без вести, может ли кто-нибудь сказать мне, почему?

Я использую С# для разработки специализированного инструмента для механического программного обеспечения САПР, там, где я использую соответствующую функцию для открытия файла (файл САПР), компилятор дает мне ошибку, заявляя, что имена функций, которые я поставляю, не доступны в контексте. Здесь что означает контекст?

Когда я открыл файл справки этого приложения САПР, функция, которая отвечает за открытие файла, упоминается в файле заголовка uf_part.h. Но есть пространство имен, называемое NXopen.

Я использовал пространство имен как using NXopen в Visual Basic, этого недостаточно? Должен ли я также предоставить этот файл заголовка? Если да, то как? Пожалуйста, помогите мне.

4b9b3361

Ответ 1

С# более "программист". Когда вы работаете с файлами одного и того же проекта, вместо того, чтобы вручную указывать "файл заголовка" каждый раз, он будет отображаться во всех файлах проекта для соответствия в соответствии с пространством имен.

Чтобы понять это, выполните следующие действия:

  • Запустите новый проект в Visual Studio. (Независимо от того, какой тип, WinForms или Консоль)
  • Щелкните правой кнопкой мыши проект и добавьте новый класс.
  • В заметке основного класса вы можете увидеть новый класс, который вы только что добавили, без добавления заголовка.

Как это делается? Просто имея одинаковое пространство имен для обоих классов. Механизм .NET достаточно умен, чтобы связать все эти классы вместе.

Теперь, когда дело доходит до кода внешнего кода, сидящего в другом DLL файле, трюк заключается в том, чтобы добавить ссылку на эту DLL (в Studio → Right click project → Add reference → Browse), тогда вам нужно чтобы указать, что вы собираетесь использовать эту DLL, добавив инструкцию using сверху:

using ExternalDllName.ExternalNamespace;

Что об этом. В отличие от С++ вам не нужно иметь файл .h, так как .NET будет автоматически искать ссылки на файлы DLL для соответствия.

Ответ 2

Нет такой вещи, как заголовочный файл в .net, потому что все необходимые метаданные содержатся в самой сборке.

Вы ссылались на необходимую сборку в проекте? Также учтите, что в С# нет такой функции, как "функция", только методы класса (что означает, что вы должны указать объект или статический класс в вызове).

Также: Общая структура программы С#

Ответ 3

Компиляторы для современных языков, таких как С# или Java, хранят в файлах скомпилированных файлов информацию о классах и методах, которые они содержат, и эту информацию можно использовать для проверки правильности вызовов, сделанных из одного исходного файла, в другой или в классы библиотеки.

Когда C было изобретено дисковое пространство, память и мощность процессора были драгоценными ресурсами, и этот подход не был бы возможен. Были добавлены файлы заголовков, чтобы позволить компилятору проверить, что разные исходные файлы соответствуют одному и тому же интерфейсу. Когда С++ был изобретен, описанный выше подход мог бы быть возможен, но я предполагаю, что он решил придерживаться C-кода по соображениям совместимости.