2010-08-09 61 views
3

你好,我是新來的asp.net。我很困惑「使用MyNameSpace」的區別是什麼?和「命名空間MyNameSpace」。我的演示代碼如下...「使用MyNameSpace」之間的區別和「命名空間MyNameSpace」

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

使用了myNameSpace;

命名空間myNameSpace對象

{ 
    public partial class DemoPage : System.Web.UI.Page 
    { 
     My code here 
    } 
} 

在上面的代碼是有兩者之間的任何差異突出陳述或沒有。如果是,那麼它是什麼?

在此先感謝...

回答

5

是的,他們提供的補充服務。

使用using指令是這樣的:

using MyNamespace; 

告訴編譯器看在命名空間MyNamespace解決簡單的名稱時 - 所以,如果你有一個名爲MyNamespace.Foo類型,你可以在你的源指使用Foo當你有這個使用指令時它。

但是,名稱空間聲明有效地表示「我在此塊中聲明的任何內容都在給定的名稱空間中」。因此,要申報MyNamespace.Foo類型,你會使用:

namespace MyNamespace 
{ 
    public class Foo 
    { 
     ... 
    } 
} 

你看到了嗎? using指示說你想使用東西在一個特定的命名空間,而命名空間聲明是關於把東西一個特定的命名空間。

+0

非常感謝Jon的解釋。我現在明白了。 – Amit 2010-08-09 09:03:14

0

using用於爲該名稱空間內的類型名稱創建「快捷方式」。只有在您編寫的代碼位於另一個名稱空間內時才需要。 namespace用於限定一個名稱空間:


在文件first.cs

// define the namespace "SomeNamespace" 
namespace SomeNamespace 
{ 
    // define a type within the namespace 
    class SomeClass { } 
} 

在文件second.cs

using SomeNamespace; 
// define the namespace "OtherNamespace" 
namespace OtherNamespace 
{ 
    class OtherClass 
    { 
     void SomeMethod() 
     { 
      // use the type "SomeClass", defined in the "SomeNamespace" namespace 
      // note that without the using directive above we would need to write 
      // SomeNamespace.SomeClass for this to work. 
      SomeClass temp = new SomeClass(); 
     } 
    } 
} 

在上面的代碼示例中,聲明temp變量不需要包含名稱空間,因爲它是在using指令中提到的。

0

是的,有區別。 namespace語句用於創建名稱空間,而using語句用於使編譯器重新識別已存在的名稱空間。

在你的代碼中,using聲明沒有效果,因爲你的所有代碼都在該名字空間中,所以它已經知道它。

正如您有using System.Web.UISystem.Web.UI.Page標識符可以被編寫爲Page,因爲編譯器知道該名稱空間中的類。如果您沒有該語句,則需要編譯器的完全限定名稱來知道在哪裏找到該類。