“使用MyNameSpace”之间的区别和“命名空间MyNameSpace”

时间:2010-08-09 07:15:35

标签: asp.net namespaces using

您好我是asp.net的新手。我很困惑“使用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
    }
}

在上面的代码中,两个突出显示的语句之间是否存在任何差异。如果是,那么它是什么?

提前致谢...

3 个答案:

答案 0 :(得分:5)

是的,他们提供补充服务。

这样的using指令:

using MyNamespace;

告诉编译器在解析简单名称时查看名称空间MyNamespace - 所以如果你有一个名为MyNamespace.Foo的类型,你可以在源代码中使用Foo来引用它当你有这个使用指令。

但是,命名空间声明有效地说,“我在此块中声明的任何内容都在给定的命名空间中”。因此,要声明 MyNamespace.Foo类型,您需要使用:

namespace MyNamespace
{
    public class Foo
    {
        ...
    }
}
你知道吗? using指令表示您希望在特定名称空间中使用内容,而名称空间声明则是将放入特定名称空间。

答案 1 :(得分: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指令中提到。

答案 2 :(得分:0)

是的,有区别。 namespace语句用于创建命名空间,而using语句用于使编译器重新识别已存在的命名空间。

在您的代码中,using语句无效,因为您的所有代码都在该命名空间中,因此它已经知道它。

正如using System.Web.UI那样,System.Web.UI.Page标识符可以写成Page,因为编译器知道该命名空间中的类。如果您没有using语句,则需要编译器的完全限定名称才能知道在哪里找到该类。