c#中的命名空间

转载 2015年07月07日 17:56:08

C#中有命名空间,Java中有包。命名空间我觉得就像是装类的一个箱子,知道这个箱子再找某个类就方便了。

在C#中,用法如下:

文件:lixueru.cs

namespace lixueru

{

    public class lixueruSpace

    {

    }

    public class Famile

    {

    }

}

在这里创建了命名空间lixueru,这里命名空间里有两个类lixueruSpace,Famile。

命名空间不需要声明,直接namespace lixueru就“创建”了一个名称为lixueru的命名空间,也没有public,private之类的标识符。

现在向lixueru中添加第三个类:lixueruSky。并且应用lixueruSpac和 family这两个类。

文件名称lixueruSky.cs

namespace lixueru

{

    public class lixueruSky

    {

        lixueruSpac space;

        Famile family;

    }

}

lixueruSky中用到了lixueruSpac和 family两个类,直接用就行了。因为他们在同一个命名空间里。

那么什么时候不能直接用呢?

现在“创建”第二个命名空间。

namespace lixueru.Common

{

    public class lixueruThink

    {

         lixueruSky sky;

    }

}

这里“创建”了一个命名空间lixueru.Common,其中有一个类lixueruThink。

但是如果编译这段代码,会产生错误。因为 lixueruSky 并不在 lixueru.Common命名空间中,也就是说它们不在一个箱子里。

不告诉lixueruThink类命名空间是什么,谁知道到哪儿去找lixueruSky 。你不告诉我 箱子名称,我知道到那个箱子里找东西。

那么命名空间 lixueru.Common与 lixueru有什么关系呢?有,名称有点相似,就是这一点关系,其他什么关系也没有。lixueru.Common与 lixueru可以说互补牵连。

如果想在类lixueruThink中应用lixueruSky ,得先告诉我到哪儿才能找到lixueruSky 。

可以有两种方法。

第一种:

namespace lixueru.Common

{

    public class lixueruThink

    {

         lixueru.lixueruSky sky;

    }

}

这种方法告诉了 lixueruThink,lixueruSky是 lixueru里面的lixueruSky。到 lixueru中去找就找到了。

还有一种写法:

using lixueru;

namespace lixueru.Common

{

    public class lixueruThink

    {

          lixueruSky sky;

    }

}

这种写法是告诉程序,如果用到  lixueruSky 先在当前命名空间lixueru.Common中找,如果找不到,再到lixueru中找找看看。

using是一个关键字。是告诉代码,你可以到我指的地方【lixueru】找东西。如果程序在lixueru.Common中找到了lixueruSky ,它还是会去lixueru中看看有没有lixueruSky ,如果也有 ,程序就晕了,它不知道怎么办了,就会提示错误。

我现在想在lixueru.Common中也添加一个lixueruSky 类。如下:

namespace lixueru.Common

{

    public class lixueruSky

    {

    }

}

现在直接用using就不行了,所以上边的用using的代码要修改:

using  lixueru;

namespace lixueru.Common

{

    public class lixueruThink

    {

          lixueru.lixueruSky sky;

    }

}

现在程序就不晕了。

如果你觉得  lixueru太长,你还可以这样写上一段代码:

using  LXR = lixueru;

namespace lixueru.Common

{

    public class lixueruThink

    {

        LXR.lixueruSky sky;

    }

}

不过,C#中命名空间并不是必须有的,如果我写一下面的代码,也正确:

using  LXR= lixueru;

public class lixueruThink

{

    LXR.lixueruSky sky;

}

只不过lixueruThink属于一个默认的命名空间而已

matplotlib的基本用法(四)——设置legend图例

matplotlib的基本用法(四)——设置legend图例

关于C# MSChart中如何添加右侧图例说明legend和生成百分比视图

(本文为Asp.Net开发,编译器为VS2013.) 1.首先从工具箱中的【数据】中拖入Chart. 会自动在页面头部,配置文件中加载相关信息如:...

小组学习:C#命名空间

  • 2009年07月22日 15:40
  • 36KB
  • 下载

C#构建多线程应用程序(2) —— System.Threading命名空间

在.NET平台下,System.Threading命名空间提供了许多类型来构建多线程应用程序。这篇博客简单讲述了使用System.Threading命名空间实现多线程的方法。...

C#命名空间分类

  • 2013年02月08日 13:21
  • 3KB
  • 下载

C#命名空间详解 (转载)

C#命名空间详解  Microsoft.Csharp 包含支持用C#语言进行编译的代码  Microsoft.Jscript 包含支持用Jscript语言进行殡仪和代码生成的Jscript运...

C#的类和对象 命名空间

  • 2010年04月13日 13:01
  • 1.47MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#中的命名空间
举报原因:
原因补充:

(最多只允许输入30个字)