为什么C#没有头文件?命名空间会处理所有事情吗?

Sen*_*hur 18 c# namespaces header-files

我是一个新手程序员,谁能清楚地告诉C#中头文件和命名空间的用法?

因为在C++中我使用******.h文件来读取库函数.当我在C#中看到一些示例程序时,他们失踪了,谁能告诉我为什么?

我正在使用C#为机械CAD软件开发自定义工具,每当我使用适当的函数打开文件(CAD文件)时,编译器都会给我一个错误,指出我提供的函数名称不可用于上下文.这里的上下文是什么意思?

当我打开该CAD应用程序的帮助文件时,负责打开文件的函数被称为头文件uf_part.h.但是有一个名为的命名空间NXopen.

using NXopen在Visual Basic中使用了命名空间,还不够吗?我是否还需要提供该头文件?如果是这样的话?请帮助我.

Sha*_*ard 22

C#更"程序员友好".处理同一项目的文件时,不是每次都手动指定"头文件",而是根据命名空间查看所有项目文件中的匹配项.

要了解这一点,请执行以下步骤:

  1. 在Visual Studio中启动新项目.(无论什么类型,WinForms或控制台)
  2. 右键单击该项目并添加新类.
  3. 在主课堂笔记中,您可以看到刚刚添加的新课程,而无需添加任何标题.

怎么做的?只需在两个类中使用相同的命名空间即可..NET引擎非常智能,可以将所有这些类链接在一起.

现在,当谈到外部代码意味着代码坐在不同的DLL文件中时,技巧是添加对该DLL的引用(在Studio中 - >右击项目 - >添加引用 - >浏览)然后你需要指定你将通过在顶部添加using语句来使用该DLL :

using ExternalDllName.ExternalNamespace;
Run Code Online (Sandbox Code Playgroud)

就是这样.与C++不同,您不需要拥有.h文件,因为.NET会自动搜索引用的DLL文件以进行匹配.

  • "使用是C#相当于C++ include命令" - 我不认为这是对的.我认为更准确地说C#的`using`只是C++的`using namespace`,而且*所有*可能是`#include`d,默认情况下. (6认同)

Ser*_*sev 8

在.net中没有头文件这样的东西,因为所有需要的元数据都包含在引用的程序集本身中.

你在项目中引用了所需的装配吗?另外请注意,C#中没有"function"这样的东西,只有类方法(这意味着你必须在调用时指定对象或静态类).

另外:C#程序的一般结构


Nic*_*tti 5

适用于现代语言(例如C#或Java)的编译器在编译文件中存储有关它们所包含的类和方法的信息,并且该信息可用于检查从一个源文件到另一个源文件或库类的调用的正确性。

当C发明磁盘空间时,内存和CPU能力是宝贵的资源,这种方法不可能实现。引入头文件是为了允许编译器检查不同的源文件是否符合相同的接口。当发明C ++时,上面描述的方法是可行的,但是我想出于兼容性原因,选择使用C语言。