30

任何人都可以清楚地说明 C# 中头文件和命名空间的用法吗?

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

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

当我打开该 CAD 应用程序的帮助文件时,在名为uf_part.h. 但是有一个名为NXPpen.

using NXOpen在 Visual Basic 中使用命名空间,这还不够吗?我还需要提供那个头文件吗?如果是这样,怎么做?

4

3 回答 3

31

C# 更“对程序员友好”。在处理同一个项目的文件时,它不会每次都手动指定“头文件”,而是会根据命名空间在所有项目文件中查找匹配项。

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

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

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

现在,当涉及到位于不同 DLL 文件中的外部代码意味着代码时,诀窍是添加对该 DLL 的引用(在 Studio --> 右键单击​​项目 --> 添加引用 --> 浏览)然后您需要指定您将通过在顶部添加using 语句来使用该 DLL :

using ExternalDllName.ExternalNamespace;

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

于 2012-08-05T07:57:17.850 回答
12

There's no such thing as header file in .net, because all needed metadata is contained in referenced assembly itself.

Have you referenced needed assembly in you project? Also please mind that there's no such thing as "function" in C#, only class methods (which means that you have to specify object or static class in you call).

Also: General Structure of a C# Program

于 2012-08-05T07:47:59.747 回答
10

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

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

于 2012-08-05T07:58:30.267 回答