2010-10-22 166 views
0

我讀過這種方式,程序員不得不爲他們的類考慮特殊名稱,以便在用戶PC上加載文件時不會與另一個名稱發生衝突。這是我不明白的,如果班級在例如DLL,它如何與PC上的其他類相沖突?名稱空間避免衝突 - 例子?

即使沒有名稱空間,如果我導入一個DLL,我想我需要從該DLL調用該類,所以我不能使代碼無法進行complile。 我真的很感謝這裏的解釋,謝謝!

回答

0

請考慮是否沒有命名空間。然後你從程序集中加載一個類型MyClass。現在,如果從另一個程序集加載另一個類型,並且存在一個MyClass。你如何加載第二種類型?怎麼辦告訴你要哪一個編譯器,當你說

MyClass o = new MyClass() 

答案 - 你要的名字命名空間的唯一標識類,否則它是不明確的。所以你說爲什麼不把名字空間限制在程序集中。這很好,但看起來這是一個好主意,平臺的設計者引入了一個概念,任何人都可以在程序集中創建多個名稱空間,以便人們更好地分配代碼。然後我們問爲什麼不允許命名空間穿過程序集,以便我們可以更容易地分割代碼。

您對名稱空間有很多用途,它取決於您的應用程序設計人員想出一些適用於您的東西 - 即使它只有一個名稱空間。

+0

好,所以我可以有點寫我自己的Random類或List類在我的命名空間中,然後我將需要原始的全名,對吧?當然是 – CuriousOne 2010-10-22 09:18:16

+0

。完全正確! – 2010-10-22 09:19:45

+0

謝謝,我現在明白了 – CuriousOne 2010-10-22 09:23:06

1

例如: System.Drawing.PointSystem.Windows.Point

所以,如果一個程序引用了兩個組件,沒有命名空間,編譯器會感到困惑,當你聲明Point p;Point p = new Point(1,1);,例如

+0

但是,如果您在代碼中使用了兩個名稱空間並寫入Point,哪一個是picekd?現在如何使用 – CuriousOne 2010-10-22 09:24:17

+0

如果你使用了兩個命名空間,你必須使用全名,即'System.Drawing.Point p = System.Drawing.Point(1,1);' – 2010-10-22 09:32:34