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

时间:2012-08-05 07:44:31

标签: c# namespaces header-files

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

因为在C ++中我使用******.h文件来读取库函数。当我在C#中看到一些示例程序时,他们会丢失,有人可以告诉我为什么吗?

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

当我打开该CAD应用程序的帮助文件时,在名为uf_part.h的头文件下提到了负责打开文件的功能。但是有一个名为NXopen的命名空间。

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

3 个答案:

答案 0 :(得分:21)

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

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

  1. 在Visual Studio中启动新项目。 (无论什么类型,WinForms或控制台)
  2. 右键单击该项目并添加新类。
  3. 在您的主课程笔记中,您可以看到刚刚添加的新课程,而无需添加任何标题。
  4. 这是怎么做到的?只需在两个类中使用相同的命名空间即可。 .NET引擎非常智能,可以将所有这些类链接在一起。

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

    using ExternalDllName.ExternalNamespace;
    

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

答案 1 :(得分:8)

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

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

另外:General Structure of a C# Program

答案 2 :(得分:4)

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

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