标题:命名空间
| 支持多范型编程 | 引用的简洁性 | 主体的简洁性 | 优劣比较 |
C++ | +1 | +1 | -1 | 9 |
Java | -1 | +1 | -1 | 8 |
C# | -1 | -1 | +1 | 8 |
讨论:
1. C++通过namespace关键字支持命名空间,并且由于C++支持多范型编程,允许在命名空间里面声明变量、函数,相对C#和Java,对用户来说这提供了更加丰富的选择。
2. C#通过namespace关键字支持命名空间,但是由于C#不支持多范型编程,因此相对于C++,要扣掉一分。
3. Java通过package关键字支持命名空间,但是Java不支持多范型编程,扣掉一分;而且当引用某个命名空间的部分或者整体的类型的时候,语法上更加复杂一些(见下例),所以还要扣掉一分;但是由于命名空间主体的定义部分更加的简略,所以加一分(见下例)。
实例:
namespace test // C++的命名空间定义
{
using n.a; //引入一个类型
using n; //引入n的部分或者所有的类型
int i;
int fun();//支持多范型
class foo{};
}
package test; // Java的命名空间定义
//不必象C#和C++那样把命名空间的主题放在{}当中,更加的简略
import n.a; //引入一个类型
import n.*; //引入n的部分或者所有的类型,语法相对于C++和C#更加的复杂一些
class foo{};
namespace test // C#的命名空间定义
{
using n.a; //引入一个类型
using n; //引入n的部分或者所有的类型
class foo{};
}