“使用 MyNameSpace;”之间的区别和“命名空间 MyNameSpace”
Posted
技术标签:
【中文标题】“使用 MyNameSpace;”之间的区别和“命名空间 MyNameSpace”【英文标题】:Difference between "using MyNameSpace;" and "namespace 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
在上面的代码中,两个突出显示的语句之间是否有任何区别。如果是,那是什么?
提前谢谢...
【问题讨论】:
【参考方案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
语句,则需要编译器的完全限定名称才能知道在哪里可以找到该类。
【讨论】:
以上是关于“使用 MyNameSpace;”之间的区别和“命名空间 MyNameSpace”的主要内容,如果未能解决你的问题,请参考以下文章
夺命雷公狗—JAVA---008---println和print的区别