为什么using namespace std;
在C ++中被认为是不好的做法,但using System;
被认为是C#中的好习惯?它们似乎是类似的(将标准库填充到全局命名空间中)。
答案 0 :(得分:17)
在C#中,using
指令仅影响放置它的文件或命名空间范围。
如果在c ++头文件中包含using namespace std;
,它不仅会影响该文件,还会影响包含它的每个文件。这会在其他人的文件中产生冲突潜力。
你可以轻易地说它不是"最佳实践"在C#中,但所涉及的风险远低于C ++,因为它只会影响放置指令的文件或命名空间范围。
答案 1 :(得分:1)
因为C#没有独立功能。
C ++中using namespace std
的问题是当编译器突然决定调用std::
函数而不是函数时,count
,distance
等名称就不足为奇了或find
是几乎可以做任何事情的模板函数。
这在C#中不是问题,因为C#没有独立的函数,并且它有更严格的隐式转换(例如,你不能将int
传递给需要指针的函数)