C# namespace:命名空间
在 C# 中,可以将命名空间看作是一个范围,用来标注命名空间中成员的归属,一个命名空间中类与另一个命名空间中同名的类互不冲突,但在同一个命名空间中类的名称必须是唯一的。
举个简单的例子,在一个简单的 C# 程序中,假如我们要输出某些数据,就需要使用
命名空间的结构类似于我们计算机系统中的目录,我们可以将某个目录看作是一个命名空间,在这个目录下可以存在若干不同的文件夹,这些文件夹就可以看作是命名空间下的类。而在每个文件夹下又存放着一些文件或文件夹,这些文件和文件夹则可以看作是类中的成员。
使用命名空间的好处是可以避免命名冲突,同时也便于查找类的位置。
举个简单的例子,在一个简单的 C# 程序中,假如我们要输出某些数据,就需要使用
System.Console.WriteLine() ,其中 System 就是命名空间,而 Console 是类的名字,WriteLine 则是具体要使用方法。也就是说,如果要访问某个命名空间中的类,我们需要使用 namespacename.classname.funcname()的形式。当然也可以使用 using 关键字来引用需要的命名空间,例如 using System,这样我们就可以直接使用 Console.WriteLine() 来输出指定的数据了。命名空间的结构类似于我们计算机系统中的目录,我们可以将某个目录看作是一个命名空间,在这个目录下可以存在若干不同的文件夹,这些文件夹就可以看作是命名空间下的类。而在每个文件夹下又存放着一些文件或文件夹,这些文件和文件夹则可以看作是类中的成员。
使用命名空间的好处是可以避免命名冲突,同时也便于查找类的位置。
定义命名空间
在 C# 中定义命名空间需要使用 namespace 关键字,语法格式如下:
namespace namespaceName{
// 命名空间中的代码
}
namespaceName.className.funcName()的形式,下面通过一个示例来演示命名空间的使用:
namespace c.biancheng.net
{
class Demo
{
static void Main(string[] args)
{
First.demoClass demo1 = new First.demoClass();
Second.demoClass demo2 = new Second.demoClass();
demo1.sayHello();
demo2.sayHello();
}
}
}
namespace First{
public class demoClass{
public void sayHello(){
System.Console.WriteLine("First 命名空间下 demoClass 类中的 sayHello 函数");
}
}
}
namespace Second{
public class demoClass{
public void sayHello(){
System.Console.WriteLine("Second 命名空间下 demoClass 类中的 sayHello 函数");
}
}
}
运行结果如下:
First 命名空间下 demoClass 类中的 sayHello 函数
Second 命名空间下 demoClass 类中的 sayHello 函数
using关键字
using 关键字用来引用指定的命名空间,它可以告诉编译器后面的代码中我们需要用到某个命名空间。例如我们在程序中需要使用到 System 命名空间,只需要在程序的开始使用 using System 引用该命名空间即可,这时我们在使用 System 命名空间下的类时就可以将 System. 省略,例如 Console.WriteLine();。下面通过一个示例演示一下:
using System;
using First;
using Second;
namespace c.biancheng.net
{
class Demo
{
static void Main(string[] args)
{
firstClass first = new firstClass();
secondClass second = new secondClass();
first.sayHello();
second.sayHello();
}
}
}
namespace First{
public class firstClass{
public void sayHello(){
System.Console.WriteLine("First 命名空间下 demoClass 类中的 sayHello 函数");
}
}
}
namespace Second{
public class secondClass{
public void sayHello(){
System.Console.WriteLine("Second 命名空间下 demoClass 类中的 sayHello 函数");
}
}
}
运行结果如下:
First 命名空间下 demoClass 类中的 sayHello 函数
Second 命名空间下 demoClass 类中的 sayHello 函数
命名空间嵌套
命名空间可以嵌套使用,也就是说我们可以在一个命名空间中再定义一个或几个命名空间,如下所示:
namespace namespaceName1{
// namespaceName1 下的代码
namespace namespaceName2{
// namespaceName2 下的代码
}
}
.运算符来访问嵌套的命名空间成员,例如 namespaceName1.namespaceName2。下面通过示例来演示一下命名空间的嵌套使用:
using System;
using First;
using First.Second;
namespace c.biancheng.net
{
class Demo
{
static void Main(string[] args)
{
firstClass first = new firstClass();
secondClass second = new secondClass();
first.sayHello();
second.sayHello();
}
}
}
namespace First{
public class firstClass{
public void sayHello(){
System.Console.WriteLine("First 命名空间下 demoClass 类中的 sayHello 函数");
}
}
namespace Second{
public class secondClass{
public void sayHello(){
System.Console.WriteLine("Second 命名空间下 demoClass 类中的 sayHello 函数");
}
}
}
}
运行结果如下:
First 命名空间下 demoClass 类中的 sayHello 函数
Second 命名空间下 demoClass 类中的 sayHello 函数
ICP备案:
公安联网备案: