命名空間程序員
命名空間的設計目的是爲了提供一種讓一組名稱與其餘名稱分隔開的方式。在一個命名空間中聲明的類的名稱與另外一個命名空間中聲明的相同的類的名稱不衝突。ide
關鍵字:namespacespa
namespace namespace_name設計
{ // 代碼聲明對象
}編譯器
請看下面的例子:string
using System;it
using System.Collections.Generic;io
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."); } }}