为什么在C++中,
using namespace std;
被认为是不好的做法,而在C#中using System;
却被认为是好的做法?它们似乎是类似的(将标准库内容引入全局命名空间)。在C#中,using
指令只会影响它所处的文件或命名空间范围。
如果你在一个C++头文件中包含using namespace std;
,它不仅会影响该文件,还会影响每个包含该文件的文件。这可能导致其他人的文件出现冲突。
尽管在C#中使用这种方式可能不是最佳实践,但它的风险远远低于在C++中使用,因为它只会影响指令所放置的文件或命名空间范围。
因为C#没有独立的函数。
C++中使用using namespace std
的问题在于编译器突然决定调用std::
函数而不是你的函数,这并不奇怪,因为像count
、distance
或find
这样的名称都是模板函数,可以接受几乎任何东西。
在C#中,这个问题要少得多,因为C#没有独立的函数,并且它具有更严格的隐式转换(例如,你不能将一个int
传递给一个期望指针的函数)。
using namespace std;
是可以的,只要避免在头文件中使用即可。然而,还有更好、更明确的替代方案,比如使用using std::cout;
。 - Suedocode