1樓:海天盛
定義名稱空間的關鍵字是(namespace)引入名稱空間語句是(using)。
名稱空間是用來組織和重用知**的,不同的人寫的程式不可能所有的變數都沒有重名現象,對於庫來說,如果兩個人寫的庫檔案中出現同名的變數或函式(不可避免),使用起來就有問題了道。
為了解決這個問題,使用namespace***引入了名稱空間的概念;使用的庫函式或變數定義在這個名稱空間中,這樣就不會造成不必要的版本衝突。
名稱空間是一組可識別的名稱,在使用可擴充套件標記語言時,xml名稱空間是所有元素類別和屬性的集合。元素類別和屬性的名稱通過的xml名稱空間是的。
2樓:山水阿銳
c#中的類是利用名稱空間組織起來的。名稱空間提供了一種從邏輯上組織類的方式,防止命名衝突。
名稱空間宣告
用namespace 關鍵字用於宣告一個名稱空間。此名稱空間範圍允許您組織**併為您提供了建立全域性唯一型別的方法。
namespace name
其中:在名稱空間中,可以宣告類、介面、結構、列舉、委託 名稱空間。
如果未顯式宣告名稱空間,則會建立預設名稱空間。該預設的名稱空間(有時稱為全域性名稱空間)。全域性名稱空間中的任何識別符號都可用於命名的名稱空間中。
名稱空間宣告可以作為頂級宣告出現在編譯單元中,當名稱空間宣告作為頂級宣告出現在編譯單元中時,該名稱空間成為全域性名稱空間的一個成員。
名稱空間宣告出現在另一個名稱空間宣告內時,該內部名稱空間就成為包含著它的外部名稱空間的一個成員。
無論是何種情況,一個名稱空間的名稱在它所屬的名稱空間內必須是唯一的。名稱空間隱式地為 public,而且在名稱空間的宣告中不能包含任何訪問修飾符。
巢狀的名稱空間
名稱空間宣告中宣告名稱空間,各名稱空間用」.」分隔。
例如:namespace n1.n2
class b {}
}在語義上等效於
namespace n1
class b {}}}
引用類引用一個類可以用完全限定名來限定引用類(類名前加上名稱空間名),以防止命名衝突。
using 指令來匯入其他名稱空間和型別的名稱,直接地而不是通過限定名來引用它們。
using指令
using 別名指令為一個名稱空間或型別啟用一個別名。
using 名稱空間指令用於匯入一個名稱空間的型別成員。
(1) using 名稱空間指令將一個名稱空間中所包含的型別匯入到編譯單元或名稱空間體中,從而可以直接使用這些被匯入的型別的識別符號而不必加上它們的限定名。
如:namespace n1.n2
}namespace n3}}
上面的示例中,在 n3 名稱空間中n1.n2 的型別成員是直接可用的,不需要完全限定名.
(2)using 名稱空間指令匯入包含在給定名稱空間中的型別,但要注意,它不匯入巢狀的名稱空間。
示例:namespace n1.n2
}namespace n3}}
(3)using 名稱空間指令匯入的名稱會被編譯單元或名稱空間體中具有相同名稱的成員所隱藏。
例如:namespace n1.n2
class b {}
}namespace n3
//n3.a
}在 n3 名稱空間中的a類與n1.n2名稱空間中的a類名稱相同,則n1.n2.a被n3.a隱藏,a 引用 n3.a 而不是 n1.n2.a。
(4)同一編譯單元或名稱空間體中的 using 名稱空間指令匯入多個名稱空間時,如果它們所包含的型別中有重名的,則直接引用該名稱就被認為是不明確的。
示例:namespace n1
}namespace n2
}namespace n3}}
n1 和 n2 都包含一個成員 a,而由於 n3 將兩者都匯入,所以在 n3 中引用 a 會導致一個編譯時錯誤名稱衝突.
using 別名指令用於為一個名稱空間或型別指定一個別名。
using 識別符號 = 名稱空間或型別名稱 ;
例如:namespace n1.n2
}namespace n3
}上面的示例中,在 n3 名稱空間中,a 是 n1.n2.a 的別名,因此類 n3.
b 從類 n1.n2.a 派生。
通過為 n1.n2 建立別名 r 然後引用 r.a 可以得到同樣的效果:
namespace n3
}using 別名指令中的別名在直接包含該 using 別名指令的編譯單元或名稱空間的宣告空間內必須是唯一的。例如:
namespace n3
}namespace n3
上例中,n3 已包含了成員 a,因此 using 別名指令使用 a 作識別符號會導致一個編譯時錯誤。
c#裡的名稱空間是什麼意思?
3樓:
c#裡的名稱空間是使用一種**組織的形式通過名稱空間來分類。
名稱空間是用來組織和重用**的,不同的人寫的程式不可能所有的變數都沒有重名現象,對於庫來說,如果兩個人寫的庫檔案中出現同名的變數或函式(不可避免),使用起來就有問題了。
為了解決這個問題,引入了名字空間這個概念,通過使用namespace***;所使用的庫函式或變數就是在該名字空間中定義的,這樣一來就不會引起不必要的衝突了。
名稱空間是唯一識別的一套名字,使用擴充套件標記語言的時候,xml的名稱空間是所有元素類別和屬性的集合。元素類別和屬性的名字是可以通過唯一xml名稱空間來唯一。
擴充套件資料定義名稱空間
1、名稱空間的定義是以關鍵字namespace開始namespacenamespace_name2、為了呼叫支援名稱空間版本的函式或變數,會把名稱空間的名稱置於前面namespace_name.item_name;
c#中的名稱空間用和不用有什麼區別
4樓:匿名使用者
用了之後才能使用一些空間內的函式,方法。。。
比如用到輸入輸出,就要用
using system.io
5樓:匿名使用者
如同名字一樣的意思,namespace:名字空間,之所以出來這樣一個東西,是因為人類可用的單詞數太少,並且不同的人寫的程式不可能所有的變數都沒有重名現象,對於庫來說,這個問題尤其嚴重,如果兩個人寫的庫檔案中出現同名的變數或函式(不可避免),使用起來就有問題了,為了解決這個問題,引入了名字空間這個概念,通過使用using namespace ***;你所使用的庫函式或變數就是在該名字空間中定義的.這樣一來就不會引起不必要的衝突了.
6樓:匿名使用者
最簡單的答案是,你可以通過名稱空間區分 相同識別符號 我就這麼理解的,嘿嘿,沒有認真學過
比如說namespace a
}namespace b
}你要用c這個類的時候,你就可以通過 這種方式使用 a.c 或者b.c
當然你本身使用這個類的地方在相同名稱空間當中,就不需要在識別符號前加名稱空間字首了
當你和別人合作做專案的時候,名稱空間的好處就能明顯體現出來,當然也不是說非得你用它
7樓:
不用名稱空間的話,有些方法不能呼叫的。要先引用了名稱空間才可以呼叫方法。
8樓:匿名使用者
這個用和不用就涉及到了一個應用程式域的作用範圍,眾所周知c#裡面有訪問修飾符,那麼,用不用名稱空間,最直觀的瞭解就是去了解一些訪問修飾符的範圍,同時降低了命名的衝突性
關於C語言中陣列的定義,C語言中如何定義陣列
一樣的,陣列在做函式引數時,傳遞給函式的都是陣列的首指標,哪怕你的函式這樣寫 void swp int p 在呼叫的時候swp array 也是可以的。只要傳遞給函式一個陣列的首指標就行了,而你的array正好是陣列的首指標。char s 10 123 是表示前三個元素分別是1,2,3但s 2 0 ...
c語言中如何定義二維陣列,C語言中如何定義一個二維陣列
int a 2 3 a 0 0 a 0 1 a 0 2 a 1 0 a 1 1 a 1 2 表示兩行三列 include main int i,j,total 0 for i 0 i 3 i printf n printf total d n total 用指標new出來 二維陣列定義必須規定列 i...
c語言中exit怎麼定義,在C語言中,exit 0 是什麼意思
函式名 exit 所在標頭檔案 stdlib.h 功 能 關閉所有檔案,終止正在執行的程式。exit 1 表示回異常退出.這個答1是返回給作業系統的不過在dos好像不需要這個返回值 exit x x不為0 都表示異常退出 exit 0 表示正常退出 用 法 void exit int status ...