namespace: 名字空间
namespace相当于windows操作系统中的文件夹,因为现在的程序大多都是大项目或是代码不

是一个人来完成的,难免会有变量声明时出现重名的现象,比如程序员A定义了一个变量x程

序员B也定义了一个x,这时为了精确定位是哪个x用namespace加以限制就可以了,比如A的x

在一个叫 proA的名字空间里,B的在proB的名字空间里那么对x定位时可以直接用proB::x或

proA::x来表示具体的x,是不是和windows里的c:\programe files和d:\programe files很

相似呢,就这个原理啦~
更详细的解释这里还有一个:
 
在一个NAMESPACE中,我们也可以用一个别名指代现有的NAMESPACE或是一些其他类型数据。

别名的使用格式如下:

using 别名 = 一个已经存在的类型;

例如:using soholife = System;

下面我们通过几个例子来加深一下理解:

namespace N1.N2

{

class A {}

}

namespace N3

{

using A = N1.N2.A;

class B: A {}

}

这里,在N3中,A是N1.N2.A的别名,而N3.B则继承于N1.N2.A!同样的我们也可以用下面的方

式来取得同样的效果:

namespace N3

{

using R = N1.N2;

class B: R.A {}

}

说道这里,我想提个问题,先看下面的例子:

namespace N1.N2

{

class A {}

}

namespace N3

{

class A {}

}

namespace N3

{

using A = N1.N2.A;

}

如果我们这样写,会有问题吗?

答案当然是肯定的了,错!因为一个别名必须是在NAMESPACE中唯一的,而上面由于已经有

class a{},我们在用using A =N1.NE.A;就所以肯定要出错了!不过如果我们该成:

using B =N1.N2.A;那么结果如何呢?朋友门自己想想吧!我就不多说了!

本来以为可以结束了,突然发现还有一个地方还没有说清楚,可以说是就没有说,呵呵,看

来只能晚些回家了,我门还是从问题看起吧:

namespace N1.N2

{

class A {}

}

namespace N3

{

using R = N1.N2;

}

namespace N3

{

class B: R.A {}

}

上面的例子中,不知道大家觉得如何,正确?错误?

如果我来回答的话,错!(呵呵,以前做选择题养成的习惯,凡是这样问的答案就是错!不

过原因是说不出来的了!)

真的上面这个程序,先开始看我也以为是正确的,后来才知道。。。,唉,看来还是要多看

书的!

原来在一个分开的单元中使用别名的时候,别名只是在它所在的单元中(NAMESPACE或其它

)可以使用,而在其他单元中是不能够用的,所以上面的那个例子中,在第二个N3中使用R

的时候,会提示R未知!当然了,如果我们想使用这样的方式,我们还是有办法的,就是把

别名R写到N3的外面:如下

using R = N1.N2;

namespace N3

{

class B: R.A {}

}

好了说了这么多,如果能全部理解的话,我想应该能适当的对NAMESPACE有一些概念了!如

果能这样的话,我的目的也达到了!

c#里namespace是什么意思?相关推荐

  1. ASP.NET 面试题和答案(不断更新)

    1. 简述 private. protected. public.Friend. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问(只能从其声明上下文 ...

  2. 去除 计算机里面的百度云管家,WIN7如何彻底清除“百度云管家”图标或残留文件?...

    1.其实这是百度云管家的注册表在捣乱,即使卸载卸载了,注册表依然有残留,所以就出现了白色的方块这种现象.下面先介绍下百度云管家所在注册表的几个键值: "HKCR\CLSID\{679F137 ...

  3. php内置类,yii2学习教程之5种内置行为类详解

    前言 众所周知学习所有知识都需要循序渐进,行为也是一样,在我们学会很牛逼的新建行为,然后轻松注入到组件类之前,先看看yii2框架为我们准备的5个内置的行为类,也许你刚要用到~话不多说了,来一起看看详细 ...

  4. .NET Core开发实战(第34课:MediatR:轻松实现命令查询职责分离模式(CQRS))--学习笔记(上)...

    34 | MediatR:轻松实现命令查询职责分离模式(CQRS) 核心对象 IMeditator IRequese.IRequest IRequestHandler<in TRequest, ...

  5. ThinkPHP讲解(一)框架基础

    ThinkPHP框架知识点过于杂乱,接下来将以问题的形势讲解tp(ThinkPHP的简写) 1.tp框架是什么,为什么使用是它? 一堆代码的集合,里边有变量.函数.类.常量,里边也有许多设计模式MVC ...

  6. spring boot配置mybatis和事务管理

    spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...

  7. Laravel核心解读--Cookie源码分析

    Laravel Cookie源码分析 使用Cookie的方法 为了安全起见,Laravel 框架创建的所有 Cookie 都经过加密并使用一个认证码进行签名,这意味着如果客户端修改了它们则需要对其进行 ...

  8. Laravel最佳实践--根据搜索参数为Model查询应用不同的Where条件

    我们平时使用Laravel的Model查询当查询应用了多个条件的时候一般都是链式调用,像下面这样: User::where('age', '=', 18)->where('sex', '=', ...

  9. [你必须知道的.NET] 调试技巧 - DebuggerDisplayAttribute

    0x01 综述 DebuggerDisplayAttribute 如名称所示 是在Debug阶段使用的. 确定类或字段在调试器变量窗口中的显示方式 MSDN地址:https://msdn.micros ...

最新文章

  1. Ntdsutil对活动目录的管理
  2. Dz0724补丁补掉的一个xss+补掉的另外一个xss
  3. Linux系统下命令行连接蓝牙设备
  4. CEO 赠书 | 当我们谈企业文化时,我们在谈什么?
  5. Java常用API(六)Date 日期类介绍及使用
  6. 全国计算机等级考试题库二级C操作题100套(第86套)
  7. Android开发笔记(十三)视图绘制的几个方法
  8. SWF怎么转换AVI视频格式呢?
  9. getParameterValues
  10. 【流媒体|从入门到出家】:流媒体协议—HTTP
  11. 好产品是如何炼成的?
  12. PS 图像调整算法——反相
  13. java Map的知识点
  14. solo 电路 耳放_自己焊的一个耳放(参考solo)
  15. SQL Server数据库的T-SQL查询语句
  16. 【高防服务器租用】这里有一份服务器租用攻略,请收好!
  17. 图文并茂认识计算机网络
  18. MahApps.Metro扁平化UI控件库(可修改主题色等)
  19. solaris jumpstart
  20. Zedboard系列教程

热门文章

  1. python 去掉双引号_你要偷偷的学Python,然后惊呆所有人(第一天)
  2. 朱嘉明出任数字经济领袖班教务长 | 强大导师阵容,虚位以待
  3. 动画原理与网络游戏设计——课程学习笔记1~3周
  4. 那些年入上百万的人是如何做到的?他们的平均年龄是多少?白手起家的到底多不多?...
  5. 三种实现Android主界面Tab的方式
  6. VR全景拍摄结合更多的市场刚需,为云端生活赋能
  7. 矢量绘图软件:Sketch 56 for mac
  8. FLIR E95红外热像仪,带你走进建筑诊断解决方案
  9. 团队项目--地铁信息查询
  10. 阿里云课堂·云安全·Web应用安全认知(笔记)