【发布时间】:2016-12-25 12:19:06
【问题描述】:
为什么 C# 中不需要 #include 指令?这是因为与 C/C++ 预处理器、编译器、链接器等的原始性质相比,C# 具有更发达/包容/限制性的编译过程吗? (即您正在 Visual Studio for C# 中进行开发)。
我只是好奇编译过程如何知道在哪里寻找其他类。
编辑:我意识到您不需要 C# 中的实际 #include 语句,因为那没有意义。但是,我更好奇您的 C# 程序如何在没有任何指示符的情况下知道其他类的存在。 谢谢,
【问题讨论】:
-
因为您正在编译的所有
.cs文件都为编译器所知,因此它们不必相互包含。文件名直接传递给编译器。在 C++ 中,.cpp文件实际上是相同的,只是在这种情况下,它是链接器负责将它们放在一起。 -
直接回答 - C# 不是 C。在编写 C# 时忘记 C,不要问“为什么?” (简单地想象一下您可以问多少这样的问题)。更具体的答案 - C# 不使用 H 文件,不查找
#include来查找文件等,而是使用项目文件和using定义在哪里查找类。更多信息请阅读this,可能会有用。 -
@Sinatr 所以我在 C++ 中使用“using”关键字的经验是它用于类型解析。它在 C# 中似乎很相似。但是,就实际引入代码以使其在您的类中可访问而言,“using”关键字没有任何作用。在 C++ 中,您将使用 #include 指令引入类定义、函数原型等,以通知编译器查找应在某处定义的内容。但是,在 C# 中,IDE 会为您执行此操作吗?因此您不需要#include 指令?
-
老实说,我不知道 C++ 中的 类型解析 是什么。
using在 C++ 中是什么并不重要。只有usingdirective 在 C# 中是什么才重要,对吧?至于usingstatement,它是另一个C# 的东西,不要试图在你知道的语言中寻找相似之处,只需阅读它是什么并使用它。而且..忘记#include。