【问题标题】:Difference between "using MyNameSpace;" and "namespace MyNameSpace"“使用 MyNameSpace;”之间的区别和“命名空间 MyNameSpace”
【发布时间】:2011-03-27 03:56:43
【问题描述】:

您好,我是 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
    }
}

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

提前谢谢...

【问题讨论】:

    标签: asp.net namespaces using


    【解决方案1】:

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

    这样的 using 指令:

    using MyNamespace;
    

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

    然而,命名空间声明实际上是说,“我在这个块中声明的任何东西都在给定的命名空间中”。所以要声明 MyNamespace.Foo 类型,你可以使用:

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

    你看到了吗? using 指令表示您希望在特定命名空间中使用事物,而命名空间声明是关于将事物放入特定命名空间。

    【讨论】:

    • 感谢 Jon 的精彩解释。我现在明白了。
    【解决方案2】:

    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 指令中被提及。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-20
        • 2020-08-21
        • 1970-01-01
        • 2017-04-30
        • 2020-10-21
        • 2016-05-28
        • 2012-08-12
        • 2018-06-23
        相关资源
        最近更新 更多