C#高级编程第七天----命名空间
来源:互联网 发布:安卓更改mac地址 编辑:程序博客网 时间:2024/05/23 00:04
命名空间
命名空间的设计目的是为了提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。
关键字:namespace
namespace namespace_name
{ // 代码声明
}
请看下面的例子:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
First.T1 t1 = new First.T1();
Second.T2 t2 = new Second.T2();
t1.func();
t2.func();
Console.ReadKey();
}
}
}
namespace First
{
class T1
{
public void func()
{
Console.WriteLine("t1");
}
}
}
namespace Second
{
class T2
{
public void func()
{
Console.WriteLine("t2");
}
}
}
在使用类T1的时候前面加上了First命名空间,其实在使用Console的时候,完整是写法应该是System.Console.ReadKey();
因为使用了using System;所以可以省略这个命名空间.
using关键字
using 关键字表明程序使用的是给定命名空间中的名称。用法前面已经给出,省略前面的命名空间的写法.
也可以使用 using 命名空间指令,这样在使用的时候就不用在前面加上命名空间名称。该指令告诉编译器随后的代码使用了指定命名空间中的名称。
using System;
using First;
using Second;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
T1 t1 = new First.T1();
T2 t2 = new Second.T2();
t1.func();
t2.func();
System.Console.ReadKey();
}
}
}
namespace First
{
class T1
{
public void func()
{
Console.WriteLine("t1");
}
}
}
namespace Second
{
class T2
{
public void func()
{
Console.WriteLine("t2");
}
}
}
嵌套命名空间
命名空间可以被嵌套,即在一个命名空间里嵌套另外一个命名空间.
namespace First
{
//代码
namespace Second
{
//代码
}
}
使用(.)运算符访问嵌套的命名空间的成员.例如:
using System;
using First;
using First.Second;
namespace ConsoleApplication12
{
class Program
{
static void Main(string[] args)
{
T1 t1 = new T1();
T2 t2 = new T2();
t1.func();
t2.func();
System.Console.ReadKey();
}
}
}
namespace First
{
class T1
{
public void func()
{
Console.WriteLine("t1");
}
}
namespace Second
{
class T2
{
public void func()
{
Console.WriteLine("t2");
}
}
}
}
因为using语句在C#文件的开头,而C和C++也罢#include语句放在语句的开头,所以从C++迁移到C#的程序员唱吧命名空间与C++风格的头文件相混淆.using语句在这些文件之间并没有建立物理连接,C#也没有对应于C++头文件的部分.
名称空间的别名
using为命名空间创建别名的用法规则为:
using alias=namespace|type
其中namespace表示创建命名空间的别名;而type表示创建类型别名。例如在.NET Office应用中,常常会引入Microsoft.Office.Interop.Word.dll程序集,在引入命名空间时为了避免繁琐的类型输入,我们通常为其创建别名如下:
using MSWord=Microsoft.Office.Interop.Word;
这样,就可以在程序中以MSWord来代替Microsoft.Office.Interop.Word前缀,如果要创建Application对象,则可以是这样,
private static MSWord.Application ooo=new MSWord.Application();
同样,也可以创建类型的别名,用法为:
using MyControle=System.Console;class UsingEx{ public static void Main() { MyConsole.WriteLine("应用了类的别名"); }}
而创建别名的另一个重要的原因在于同一cs文件中引入的不同命名空间中包括了相同名称的类型,为了避免出现名称冲突可以通过设定别名来解决,例如:
Namespace InsideDotNet.Keyword.Using{ using BoyPlayer=Boyspace.Player; using Girlplayer=Girlspace.Player; class UsingEx { public static void Main() { BoyPlayer.Play(); Girlplayer.Play(); } }}namespace Boyspace{ public class Player { public static void Play() { System.Console.WriteLine("Boys play football."); } }}namespace Girlspace{ public class Player { public static void Play() { System.Console.WriteLine("Girls play violin."); } }}
- C#高级编程第七天----命名空间
- 红皮书c#高级编程(第6版)_第2章_c#基础_命名空间
- C#高级编程十七天----Object类
- C#高级编程三十七天----结构比较
- C#高级编程五十七天----位数组
- C++高级编程(四)命名空间
- C#2005 .NET3.0高级编程学习笔记————命名空间
- C#高级编程二十七天----创建泛型类
- C#高级编程四十七天----集合接口和类型
- C#高级编程六十七天----LINQ提供程序
- C#高级编程第一天
- C#高级编程第三天
- C#学习第七天
- C#基础第七天
- 编程第七天
- 网络编程-第七天
- js高级编程中命名空间的两种用法
- c++面向对象编程(五)--高级 命名空间
- 在Solaris 上扩大文件系统
- UVA11995:I Can Guess the Data Structure
- Windows 套接字I/O 模型(2) 选择(select)模型
- Flex上传文件
- 用HTML5 实现橡皮擦的涂抹效果的教程_html5教程技巧
- C#高级编程第七天----命名空间
- 静态成员变量static
- Fix: No hostname when using DHCP in Sun Solaris 8/9/10
- NSDate如何获取一个月后的日期
- MySQL 日志文件 说明
- MapReduce输入输出类型、格式及实例
- linux centOS安装proftpd
- mysql存储过程
- 30多年程序员生涯经验总结