使用系统;在C#vs中使用namespace std;在C ++中

时间:2014-04-17 18:47:03

标签: c# c++

为什么using namespace std;在C ++中被认为是不好的做法,但using System;被认为是C#中的好习惯?它们似乎是类似的(将标准库填充到全局命名空间中)。

2 个答案:

答案 0 :(得分:17)

在C#中,using指令仅影响放置它的文件或命名空间范围。

如果在c ++头文件中包含using namespace std;,它不仅会影响该文件,还会影响包含它的每个文件。这会在其他人的文件中产生冲突潜力。

你可以轻易地说它不是"最佳实践"在C#中,但所涉及的风险远低于C ++,因为它只会影响放置指令的文件或命名空间范围。

答案 1 :(得分:1)

因为C#没有独立功能。

C ++中using namespace std的问题是当编译器突然决定调用std::函数而不是函数时,countdistance等名称就不足为奇了或find是几乎可以做任何事情的模板函数。

这在C#中不是问题,因为C#没有独立的函数,并且它有更严格的隐式转换(例如,你不能将int传递给需要指针的函数)