命名空间
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4讲命名空间
快乐乔巴的博客
视频讲师:陈广老师大家好,今天我们来讲一下命名空间,通常一个软件项目包含类可能成千上万,如果2个以上的类有相同的名称时该怎么办呢?在C#中您可以使用命名空间就是namespace来解决命名冲突的问题,C#中命名空间其实就类似于Java中的Package 就是包,在C#中命名空间可以用来定义C#类的范围。
PPT:.NET Framework类库由命名空间组成。每个命名空间都包含可在程序中使用的类型:类,结构,枚举,委托和接口。
下面我们来做个例子来看看如何声明namespace,创建一个namesapce.cs文件,
ing System;
2.//使用namespace关键字,后面是命名空间的名称CG
3.//在大括号之间的所有代码都属于这CG命名空间
space CG
5.{
6.//声明一个类Test
7.class Test
8. {
9.static void Main()
10. {
11.//打印一行My name is CG
12. Console.WriteLine("My name is CG");
13. }
14. }
15.}
保存文件后进行编译执行,效果如下:
屏幕上打印出了我们刚才输入的这行字符,看我们刚才的代码。
在这个例子中,在CG这个命名空间之下声明了一个类,当然这个类很简单,只是在屏幕上打印一行字。我们当然可以在这个命名空间下声明很多个类,去实现不同的功能。我们接下来把输出语句放到别的命名空间下,下面我们来试一下。我们首先在原代码中声明另一个命名空间,这个命名空间的名字叫A。A地下声明一个类,详细请看代码:
ing System;
2.//使用namespace关键字,后面是命名空间的名称CG
3.//在大括号之间的所有代码都属于这CG命名空间
space CG
5.{
6.//声明一个类Test
7.class Test
8. {
9.static void Main()
10. {
11.//我们在入口函数里调用A命名空间里的PrintName类底下的intro这个
函数
12.//首先声明PrintName类,前面要加上命名空间的名称
13.//并且对其初始化
14. A.PrintName a= new A.PrintName();
15.//可以使用a实例中的intro函数了
16. a.intro();
17. }
18. }
19.}
20.
21.//声明另外一个命名空间A
space A
23.{
24.//声明一个类PrintName
25.public class PrintName
26. {
27.//写个输出的函数
28.public void intro()
29. {
30. Console.WriteLine("My name is A");
31. }
32. }
33.}
好,我们进行编译执行程序,效果如下:
屏幕上成功打印了My name is A,也就是说我们调用了A这个命名空间PrintName 类底下的intro这个函数。当我们在CG命名空间下想使用A命名空间下的函数,(A.PrintName)则必须要在它的类前面加上A这个命名空间的前缀,才能去使用它。
下面我们再声明另外一个命名空间B,它里面的代码和A命名空间里的代码完全一样,
ing System;
2.
space CG
4.{
5.class Test
6. {
7.static void Main()
8. {
9. A.PrintName a= new A.PrintName();
10. a.intro();
11.//初始化B命名空间下的PrintName类
12. B.PrintName b = new B.PrintName();
13.//调用intro函数
14. b.intro();
15. }
16. }
17.}
18.
19.//声明另外一个命名空间A
space A
21.{
22.//声明一个类PrintName
23.public class PrintName
24. {
25.//写个输出的函数
26.public void intro()
27. {
28. Console.WriteLine("My name is A");
29. }
30. }
31.}
32.//再声明另外一个命名空间B
space B
34.{
35.//声明一个类PrintName
36.public class PrintName
37. {
38.//写个输出的函数
39.public void intro()
40. {
41. Console.WriteLine("My name is B");
42. }
43. }
44.}
进行编译执行查看效果,如图:
在这里呢,分别调用了A命名空间里的intro函数和B命名空间里的intro函数。而且,它们底下的类PrintName和类下的函数intro都是一模一样的。但是通过了它们的命名空间的前缀,将它们区分开来,也就是说,在C#中只要使用了命名空间就不必担心你写的类会跟其他人所写的类有相同的名称。
下面我们来看一下使用命名空间的好处:
PPT:1.代码可以分布在多个文件中
2.命名空间具有扩展性
3.可以堆砌出层次式的类组织结构
我们先来看一下第三点,命名空间和类一样,允许采用嵌套的结构,一个命名空间可以包含其他命名空间,形成层次式结构,以更容易分组,管理。好,我们再修改下代码,在A和B命名空间上嵌套一个命名空间A,把A和B命名空间的名称改为A1,
ing System;
2.
space CG
4.{