(三十四)C#编程基础复习——C#命名空间(namespace)
在C#中,可以将命名空间看做是一个范围,用来标注命名空间成员的归属,一个命名空间中类与另一个命名空间中同名的类互不冲突,但在同一个命名空间中类的名称必须是唯一的。
举个简单的例子,在一个简单的C#程序中,假如我们要输出某些数据,就需要用System.Console.WriteLine(),其中System就是命名空间,而Console是类的名字,WriteLine则是具体要使用的方法。也就是说,如果要访问某个命名空间中的类,我们需要使用namespacename.classname.funcname()的形式。当然也可以使用using关键字来引用需要的命名空间,例如using System,这样我们就可以直接使用Console.WriteLine()来输出指定的数据了。
命名空间的结构类似于我们计算机系统中的目录,我们可以将某个目录看做是一个命名空间,在这个目录下可以存在若干不同的文件夹,这些文件夹就可以看做是命名空间下的类。而在每个文件夹下又存放着一些文件或文件夹,这些文件和文件夹则可以看作是类中的成员。
使用命名空间的好处是可以避免命名冲突,同时也便于查找类的位置。
一、定义命名空间
在C#中定义命名空间需要使用namespace关键字,若要调用指定命名空间下的成员,则需要使用namespaceName.className.funcName()的形式,示例如下:
namespace _032
{
internal class Program
{
static void Main(string[] args)
{
First.demoClass demo1 = new First.demoClass();
Second.demoClass demo2 = new Second.demoClass();
demo1.sayHello();
demo2.sayHello();
Console.ReadKey();
}
}
}
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函数");
}
}
}
运行结果:
二、using关键字
using关键字用来引用指定的命名空间,它可以告诉编译器后面的代码中我们需要用到某个命名空间。例如我们在程序中需要使用到System命名空间,只需要再程序的开始使用using System引用该命名空间即可,这是我们在使用System命名空间下的类时就可以将System.省略,例如
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using First;
using Second;
namespace _032
{
internal class Program
{
static void Main(string[] args)
{
firstClass demo1 = new firstClass();
secondClass demo2 = new secondClass();
demo1.sayHello();
demo2.sayHello();
Console.ReadKey();
}
}
}
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函数");
}
}
}
运行结果:
三、命名空间嵌套
命名空间可以嵌套使用,也就是说我们可以在一个命名空间中再定义一个或几个命名空间,可以使用点.运算符来访问嵌套的命名空间成员,例如namespaceName1.namespaceName2。示例如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using First;
using First.Second;
namespace _034
{
internal class Program
{
static void Main(string[] args)
{
firstClass first = new firstClass();
secondClass second = new secondClass();
first.sayHello();
second.sayHello();
Console.ReadKey();
}
}
}
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函数");
}
}
}
}
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了