程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 講解C#地Namespace

講解C#地Namespace

編輯:C#入門知識

我現在感到學好C#就是就是要知道,C#的基本語法,C#的新的特點,C#能干什麼!

其中我感到不管如何,NAMESPACE都是很關鍵的,可以說不是只對C#而言,而是整個。NET都是由NAMESPACE組成的,所以我在看了C#的基本語法後,就直奔NAMESPACE來了,在這裡寫下自己的一些感覺,希望能對後面學習的人有所幫助。

NAMESPACE在新的NET環境下編程可以說是無所不在,總之,給我的感覺就是MS的新一代的語言的核心就是NAMESPACE,我們可以通過已經有的NAMESPACE,做我們想做的和願意做的,當然如果你感覺現有的還不夠你的使用的話,你也可以自己來使用現有的來擴展,創建自己的NAMESPACE!(感覺怎麼很象以前的COM、DCOM呢?)


下面我門說說如何建立一個NAMESPACE!

定義一個NAMESPACE首先需要包含關鍵詞:namespace

格式如下:

namespace Your_nsname

{

//namespase主體內容;

}


呵呵,給我的感覺就好象和Class或Struct一樣。不過他們除了形式有類似外,確實在很多方面都不相同,具體我們以後會慢慢說到!先往下看。。。


在一個NAMESPACE的主體內,可以引用其他的NAMESPACE!例如:

namespace Your_nsname{

//下面引用System和System.Xml著兩個NAMESPACE;

using System;

using System.Xml;


//namespase主體內容;

}

在上面有一個需要注意的就是,如果要引用NAMESPACE的話,那麼應該在申明其它類型前引用,如下是錯誤的:

namespace Your_nsname{

//其它一些內容;


//由於引用System和System.Xml放到了其它語句之後,所以。。。

using System;

using System.Xml;

}


另外對於NAMESPACE還有一個有趣的地方,就是。。。

我們先看一下下面的的兩個方式:


方式一、

namespace N1.N2

{ class A {}

class B {}

}


方式二、

namespace N1

{

namespace N2

{

class A {}

class B {}

}

}


在上面的良種方式中,第二種很容易就能看懂,是在NAMESPACE N1中再創建一個NAMESPACE N2,而N2中有兩個類(class)A、B!那麼第一種呢?其實上面兩個方式定義的其實是一模一樣的。NAMESPACE是可以嵌套定義的,我們可以使用第二種方式,層次感覺比較清楚,也可以使用第一種方式,所不同的是,第一中方式中,在N1和N2之間必須用分隔符“.”來表明他們兩者之間的層次關系!

在使用的時候用如下的方式:

N1.N2.A;

N1.N2.B;

在一個NAMESPACE中,我們也可以用一個別名指代現有的NAMESPACE或是一些其他類型數據。

別名的使用格式如下:

using 別名 = 一個已經存在的類型;

例如:using soholife = System;


下面我們通過幾個例子來加深一下理解:

namespace N1.N2

{

class A {}

}

namespace N3

{

using A = N1.N2.A;

class B: A {}

}

這裡,在N3中,A是N1.N2.A的別名,而N3.B則繼承於N1.N2.A!同樣的我們也可以用下面的方式來取得同樣的效果:

namespace N3

{

using R = N1.N2;

class B: R.A {}

}


說道這裡,我想提個問題,先看下面的例子:

namespace N1.N2

{

class A {}

}


namespace N3

{

class A {}

}


namespace N3

[1] [2] 下一頁  

{

using A = N1.N2.A;

}


如果我們這樣寫,會有問題嗎?

答案當然是肯定的了,錯!因為一個別名必須是在NAMESPACE中唯一的,而上面由於已經有了

class a{},我們在用using A =N1.NE.A;就所以肯定要出錯了!不過如果我們該成:

using B =N1.N2.A;那麼結果如何呢?朋友門自己想想吧!我就不多說了!


本來以為可以結束了,突然發現還有一個地方還沒有說清楚,可以說是就沒有說,呵呵,看來只能晚些回家了,我門還是從問題看起吧:

namespace N1.N2

{

class A {}

}

namespace N3

{

using R = N1.N2;

}

namespace N3

{

class B: R.A {}

}

上面的例子中,不知道大家覺得如何,正確?錯誤?

如果我來回答的話,錯!(呵呵,以前做選擇題養成的習慣,凡是這樣問的答案就是錯!不過原因是說不出來的了!)


真的上面這個程序,先開始看我也以為是正確的,後來才知道。。。,唉,看來還是要多看書的!

原來在一個分開的單元中使用別名的時候,別名只是在它所在的單元中(NAMESPACE或其它)可以使用,而在其他單元中是不能夠用的,所以上面的那個例子中,在第二個N3中使用R的時候,會提示R未知!當然了,如果我們想使用這樣的方式,我們還是有辦法的,就是把別名R寫到N3的外面:如下

using R = N1.N2;

namespace N3

{

class B: R.A {}

}


好了說了這麼多,如果能全部理解的話,我想應該能適當的對NAMESPACE有一些概念了!如果能這樣的話,我的目的也達到了!

 

上一頁  [1] [2] 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved