精华内容
下载资源
问答
  • 请教一个问题,go micro 的命名空间有什么要求吗? 我看教程中老师的namespace好像是随便定义的也能,比如https://github.com/hzde0128/gomicro_note/blob/master/p25/READMD.md中的定义是`api.hzde.com`,我下载...
  • 在写c#程序时命名空间有什么作用

    万次阅读 2011-08-18 09:11:58
    二个作用:避免命名冲突,便于管理 C#中的类是利用命名空间组织起来的。命名空间提供了一种从逻辑上... namespace 关键字用于声明一个命名空间。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的
    二个作用:避免命名冲突,便于管理 


    C#中的类是利用命名空间组织起来的。命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。
    命名空间声明
           用namespace 关键字用于声明一个命名空间。此命名空间范围允许您组织代码并为您提供了创建全局唯一类型的方法。
           namespace name
           {
                类型定义
           }
           其中:在命名空间中,可以声明类、接口、结构、枚举、委托 命名空间。

           如果未显式声明命名空间,则会创建默认命名空间。该默认的命名空间(有时称为全局命名空间)。全局命名空间中的任何标识符都可用于命名的命名空间中。

           命名空间声明可以作为顶级声明出现在编译单元中,当命名空间声明作为顶级声明出现在编译单元中时,该命名空间成为全局命名空间的一个成员。

           命名空间声明出现在另一个命名空间声明内时,该内部命名空间就成为包含着它的外部命名空间的一个成员。

           无论是何种情况,一个命名空间的名称在它所属的命名空间内必须是唯一的。命名空间隐式地为 public,而且在命名空间的声明中不能包含任何访问修饰符。

    嵌套的命名空间
    命名空间声明中声明命名空间,各命名空间用”.”分隔。
    例如:
    namespace N1.N2
    {
       class A {}
       class B {}
    }
    在语义上等效于
    namespace N1
    {
       namespace N2
       {
          class A {}
          class B {}
       }
    }

    引用类
           引用一个类可以用完全限定名来限定引用类(类名前加上命名空间名),以防止命名冲突。
           using 指令来导入其他命名空间和类型的名称,直接地而不是通过限定名来引用它们。

    Using指令
           using 别名指令为一个命名空间或类型启用一个别名。
           using 命名空间指令用于导入一个命名空间的类型成员。

     (1) using 命名空间指令将一个命名空间中所包含的类型导入到编译单元或命名空间体中,从而可以直接使用这些被导入的类型的标识符而不必加上它们的限定名。
    如:
           namespace N1.N2
           {
               class A {}
           }
           namespace N3
           {
                using N1.N2;
                class B
                {
                         public static void Main()
                         {
                                A a=new A();
                         }
                  }
            }
    上面的示例中,在 N3 命名空间中N1.N2 的类型成员是直接可用的,不需要完全限定名.

    (2)using 命名空间指令导入包含在给定命名空间中的类型,但要注意,它不导入嵌套的命名空间。
    示例:
    namespace N1.N2
    {
       class A {}
    }
    namespace N3
    {
         using N1;
         class B
           {
                  public static void Main()
                  {
                         A a=new A(); //错误,N1.N2命名空间中的类型没有导入到命名空间N3中
                  }
           }
    }

    (3)using 命名空间指令导入的名称会被编译单元或命名空间体中具有相同名称的成员所隐藏。

    例如:
    namespace N1.N2
    {
       class A {}
       class B {}
    }
    namespace N3
    {
       using N1.N2;
       class A {}//N3.A
    }
        在 N3 命名空间中的A类与N1.N2命名空间中的A类名称相同,则N1.N2.A被N3.A隐藏,A 引用 N3.A 而不是 N1.N2.A。

    (4)同一编译单元或命名空间体中的 using 命名空间指令导入多个命名空间时,如果它们所包含的类型中有重名的,则直接引用该名称就被认为是不明确的。
    示例:
    namespace N1
    {
       class A {}
    }
    namespace N2
    {
       class A {}
    }
    namespace N3
    {
       using N1;
       using N2;
       class B
       {
            public static void Main()
            {
                   A a=new A()// 错误A类明确,要使用完全限定名
            }
        }
    }
        N1 和 N2 都包含一个成员 A,而由于 N3 将两者都导入,所以在 N3 中引用 A 会导致一个编译时错误名称冲突.

    using 别名指令用于为一个命名空间或类型指定一个别名。
    using   标识符   =   命名空间或类型名称 ;

    例如:
    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 派生。通过为 N1.N2 创建别名 R 然后引用 R.A 可以得到同样的效果:
    namespace N3
    {
      using R = N1.N2;
       class B: R.A {}
    }

    using 别名指令中的别名在直接包含该 using 别名指令的编译单元或命名空间的声明空间内必须是唯一的。例如:
    namespace N3
    {
       class A {}
    }
    namespace N3
    {
       using A = N1.N2.A;      // 错误,命名冲突
    }
    上例中,N3 已包含了成员 A,因此 using 别名指令使用 A 作标识符会导致一个编译时错误。

    展开全文
  • 对方编好的代码中using FarPoint.Web.Spread这个命名空间,通过这个对方可以在网页上点击按钮显示一个excel 表格,但是我不了![图片说明](https://img-ask.csdn.net/upload/201704/14/1492132815_718355.png)!...
  • 什么C++之:命名空间

    千次阅读 2015-08-12 12:16:28
    1.1.1. 为什么命名空间(namespace) 对于一个大型的C语言软件项目,给函数和全局变量起名不是一个容易的事情,因为必须考虑没有可能与其它程序员写的代码冲突,多数的做法是对每个模块的一组函数名加个特定...
    1.1.1. 为什么要命名空间(namespace)

    对于一个大型的C语言软件项目,给函数和全局变量起名不是一个容易的事情,因为必须考虑有没有可能与其它程序员写的代码冲突,多数的做法是对每个模块的一组函数名加个特定前缀,如HTRequest_setInternal、HTRequest_internal等。这使得程序员每次调用这些函数时都必须多输出一些字符,虽然使用现在比较优秀的IDE(Integrated Development Environment),不会给程序员的输入带来多少负责,但这些字符看起来还是有些多余。所以C++引入了namespace的概念,把一些标识符以命名空间树结构的方式组织起来,使代码看起来更优雅。而且事实证明,该特性是先进的,对于大型项目的作用是明显的,并且在后来的编程语言如Java、C#、Python都支持此类特性,只是有些叫法不同而已。

    命名空间不仅可以用于组织类型(class、struct、Enum)等,还可以用于组织全局变量、全局函数等。如例程[2-1]所示,将不同模块的标识符分别组织到不同的命名空间中,从而避免标识符的冲突。

    // 例程[2-1]

    #include

    namespace sock{

    typedef unsigned short socket_port_t;

    const char* LOOPBACK_ADDR = “127.0.0.1”;

    const socket_port_t DEFUALT_HTTP_PORT = 80;

    }

    int main( void )

    {

    std::cout<<”Local HTTP addr = “< <<’:’< return 0;

    }

    在大型的C++项目中使用命名空间比较好的项目如Google浏览器Chorme、开源C++库boost等,而没有使用命名空间的一个例子就是开源C++库ACE(The ADAPTIVE Communication Environment ),它选择了在每个类型的前面加上前缀“ACE_”,使得标识符都比较长,而且看起来有点儿冗余。为使用起来方便,而且不修改ACE的源码,可以使用typedef标识符对这些标识符进行重命名,如例程[2-2]所示。请注意,不能在这里使用#define,因为宏不受命名空间的限制。

    // 例程[2-2]

    #include

    namespace ace{

    typedef ACE_Mutex Mutex;

    typedef ACE_Lock Lock;

    }

    1.1.2. 如何引用命令空间内的标识符

    当引用的标识符不在当前命名空间或全局命名空间内时,有三种方式可以引用该标识符,如引用前一节新定义的ace命令空间中的Mutex类型:

    // 方式一

    ace::Mutex mutex;

    // 方式二

    using ace::Mutex;

    Mutex mutex;

    // 方式三

    using namespace ace;

    Mutex mutex;

    方式一只在必要的时候通过域运算符“::”引用指定命令空间内的标识符,适用于当前编译单元引用ace内的标识符不多,而且编译单元内使用这些标识符的次数也不多的情况。

    方式二只引入ace::Mutex一个标识符,如果在当前编译单元内使用ace::Mutex次数较多,而且不会与当前命名空间内的标识符冲突,建议使用这种方式。

    方式三是把ace命名空间中的全部标识符都引入到当前命名空间中,此后ace所有的标识符对于当前命名空间都是可见的,这会提高标识符冲突的危险。如果当前编译单元用到ace命令空间内的标识符较多,而且不会出现标识符冲突的问题,可以使用这种方式,以减少字符的输入。

    对于以上三种方式,建议优先选择第一种,这种方式最不容易产生标识符冲突,方式二次之,尽可能不用第三种试,即使是对于C++标准库也不要使用第三种方式,因为至少在Solaris系统中就有一个struct类型叫map ??,如果你引用了包含该类型的头文件就会导致命名冲突。

    另外,建议不要在头文件中使用using语句引入标识符,否则这些标识符将被暴露到引用这个头文件的所有编译单元内,这样很容易使命名空间失去其作用而产生命名冲突。

    对于用到的系统API,建议函数名前使用域运算符加以区别,使程序可读性更好,如:::GetLastError( ), ::getcwd( )。

    注意,切忌在自定义的命名空间中引用系统头文件,如例程[2-3]所示,避免造成标识符的混乱。

    // 例程[2-3]

    namespace my_space{

    #include

    }

    1.1.3. 命令空间的别名

    当要引用的命名空间比较长,而且想用第一种方式引用命名空间内的实体,则可以通过命名空间别名,为原来的命名空间起个简短的名字,如例程[2-4]。

    // 例程[2-4]

    namespace long_namespace{

    void func( void ) { /* function body */ }

    }

    namespace ns = long_namespace;

    int main( void )

    {

    ns::func();

    return 0;

    }

    1.1.4. 匿名命令空间

    当声明命名空间时的名称为空时,则该命名空间为匿名命名空间(unnamed namespace)。匿名的空间是C++用于替代使用static定义作用域为本编译单元的全局函数或全局变量的一种新的替代方式,匿名空间与命名的命名空间一样可以嵌套。由于匿名命名空间没有命名空间的名字,所以也无法在其它的编译单元内通过extern声明该变量,于是该变量自然也只在本编译单元内可见,如例程[2-5]。

    // 例程[2-5]

    #include

    using namespace std;

    namespace{ int i = 256; }

    namespace ns{

    namespace { int i = 128; }

    void func(void)

    {

    cout<<"ns::func :" < cout<<"/t::i="<<::i< cout<<"/tns::i="< }

    }

    int main(void )

    {

    cout<<::i< cout<<"i="< cout<<"ns::i="< ns::func();

    return 0;

    }

    使用匿名空间比使用static至少有两个好处:

    1) 对于一组多个标识符函数只需要使用一个匿名空间来声明,不需要多次输入static。

    2) 可以嵌套。这样可以在不同命名空间中使用多个同名的标识符。

    在C++的标准中也建议使用匿名命名空间间定义编译单元内部的全局变量,替代static,static关键词在此处被认为是过期的(deprecated)特性。



    from:http://blog.csdn.net/nocky/article/details/6056711

    展开全文
  • C++_什么命名空间

    2019-03-28 10:34:14
    命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。 如: namespace ns1 //指定命名中间ns...

    命名空间:实际上就是一个由程序设计者命名的内存区域,程序设计者可以根据需要指定一些有名字的空间域,把一些全局实体分别放在各个命名空间中,从而与其他全局实体分隔开来。
    如: namespace ns1 //指定命名中间nsl
    { int a;
    double b; }
    namespace 是定义命名空间所必须写的关键字,nsl 是用户自己指定的命名空间的名字(可 以用任意的合法标识符,这里用ns1是因为ns是namespace的缩写,含义请楚),在花括号内是声明块,在其中声明的实体称为命名空间成员(namespace member)。现在命名空间成员包括变量a和b,注意a和b仍然是全局变量,仅仅是把它们隐藏在指定的命名空间中而已。如果在程序中要使用变量a和b,必须加上命名空间名和作用域分辨符“::”,如nsl::a,nsl::b。这种用法称为命名空间限定(qualified),这些名字(如nsl::a)称为被限定名 (qualified name)。C++中命名空间的作用类似于操作系统中的目录和文件的关系,由于文件很多,不便管理,而且容易重名,于是人们设立若干子目录,把文件分别放到不同的子目录中,不同子目录中的文件可以同名。调用文件时应指出文件路径。
    命名空间的作用:是建立一些互相分隔的作用域,把一些全局实体分隔开来。以免产生老点名叫李相国时,3个人都站起来应答,这就是名字冲突,因为他们无法辨别老师想叫的是哪一个李相国,同名者无法互相区分。为了避免同名混淆,学校把3个同名的学生分在3个班。这样,在小班点名叫李相国时,只会有一个人应答。也就是说,在该班的范围(即班作用域)内名字是惟一的。如果在全校集合时校长点名,需要在全校范围内找这个学生,就需要考虑作用域问题。如果校长叫李相国,全校学生中又会有3人一齐喊“到”,因为在同一作用域中存在3个同名学生。为了在全校范围内区分这3名学生,校长必须在名字前加上班号,如高三甲班的李相国,或高三乙班的李相国,即加上班名限定。这样就不致产生混淆。
    可以根据需要设置许多个命名空间,每个命名空间名代表一个不同的命名空间域,不同的命名空间不能同名。这样,可以把不同的库中的实体放到不同的命名空间中,或者说,用不同的命名空间把不同的实体隐蔽起来。过去我们用的全局变量可以理解为全局命名空间,独立于所有有名的命名空间之外,它是不需要用 namespace声明的,实际上是由系统隐式声明的,存在于每个程序之中。
    在声明一个命名空间时,花括号内不仅可以包括变量,而且还可以包括以下类型:
    ·变量(可以带有初始化);
    ·常量;
    ·数(可以是定义或声明);
    ·结构体;
    ·类;
    ·模板;
    ·命名空间(在一个命名空间中又定义一个命名空间,即嵌套的命名空间)。
    例如
    namespace nsl
    { const int RATE=0.08; //常量
    doublepay; //变量
    doubletax() //函数
    {return a*RATE;}
    namespacens2 //嵌套的命名空间
    {int age;}
    }
    如果想输出命名空间nsl中成员的数据,可以采用下面的方法:
    cout<

    使用命名空间解决名字冲突

    展开全文
  • 命名空间

    2019-01-30 14:52:00
    如果是个有心的人都会问命名空间到底是干什么的? 其实简单的来说明明空间就是用来区别相似的东西的,就比如在两个类库中都一个叫add的函数,如果不加以区分计算机怎么知道你到底哪个库里面的add函数;这就是...

     

     

    如果是个有心的人都会问命名空间到底是干什么的?

     

    其实简单的来说明明空间就是用来区别相似的东西的,就比如在两个类库中都有一个叫add的函数,如果不加以区分计算机怎么知道你到底用哪个库里面的add函数;这就是明明空间的作用。

     

    不要把命名空间想的多么的神秘,我们是可以自己去定义命名空间的,不过在定义命名空间前,我们先来学一下,怎样调用命名空间的内容;

     

     

     

     

    从这段程序中我们可以看出如果没有,using namespace std;这句话那么,cin,cout,endl;都将无法调用,说明using namespace std;与输入输出相关。那么我们该如何调用命名空间中的内容尼?

    调用方法有三种:

        第一种:直接写uisng namespace stdd;则在其所在作用域内有效;

        例如一下两种情况:

     

     

     

     

    第二种:

    std::cout std::cin std::endl 等;

     

     

    第三种:

    在要调用的cout cin endl 前加上:using std::out; using std::cin; using std::endl;那么后面调用cout ,cin,endl,将不用在写std:: 了,例子如下:

     

     

    如果说三中调用方式有什么区别,有人说第一种安全性最差,但是最方便;第三种安全性较好,同时也较为方便;第三种安全性最好,但是书写起来最繁琐;看自己的选择吧!

        

    命名空间的定义:

    namespace 后跟命名空间名例如:

    namespace name{}

    下面我将以一个简单的例子说明问题:

     

    到此命名空间介绍到此结束,有错请指出谢谢!

     

    转载于:https://www.cnblogs.com/XLX-0327/p/10338084.html

    展开全文
  • 这个就要从XML说了,Spring的配置管理可以利用XML方式...简化配置,你可以去看看Spring AOP用命名空间和不用命名空间的配置有什么区别。 使用Spring 的命名空间p 装配属性 使用&lt;property&gt; 元素为Bea...
  • 我偶然发现c#命名空间、类、对象、字段名可以中文,这是怎么回事?中文和英文有有什么区别呢?大佬给我解释一下吗?
  • 这两天就想写几篇关于命名空间定义的博客,所以回家到之后就奋笔疾书的写出来发布了 为什么我们需要定名空间? 随着你的PHP代码库的增加,对之前定义的函数和类名停止修改时风险也更高了,当你试图增加第三...
  • thinkphp命名空间

    2018-04-06 15:10:00
    thinkphp命名空间 总结 1、只对函数,类,及const定义的常量有效,对define定义的常量无效 2、如果函数不是为了使用,那有什么意义呢 3、ThinkPHP将命名空间...4、有命名空间的就use引进来,没有命名空间的...
  • C++命名空间什么命名空间, 就是把一些 class 变量 对象 等 归类 到 某 “空间”,也就是规入一个组。 想某组时, using .... 表明。 例如: 命名空间 first,里面 变量 var ,整型,初值 5 ...
  • 众所周知,空气是无处不在的,这也就意味着空气能也是无处不在的,如何利用空气能现如今在科技发达的情况下早就不是...它跟空气有什么关系?你是不是也很好奇。什么是空气能?空气能,顾名思义是指空气中的能量,...
  • C#中文做变量名、函数名、类名、命名空间名等有什么问题或不妥
  • Spring命名空间介绍

    千次阅读 2016-12-14 09:48:10
    什么是spring命名空间?这个就要从XML说了,Spring的配置管理可以利用XML方式进行配置...简化配置,你可以去看看Spring AOP用命名空间和不用命名空间的配置有什么区别。  xmlns:content是为引用Spring的模块功能
  • C++基础 命名空间

    2019-03-06 22:44:47
    这里直接介绍怎么使用引发自己定义命名空间定义使用示例 引发 当使用using namespace std; 有没有那么一瞬间为什么要加这个,加了有什么作用呢?自己能不能定义呢?...namespace修饰,接命名空间的名...
  • 命名空间是类的逻辑分组,它组织成一个层次结构——逻辑树。这个树的根是System。名字空间是为了防止名字污染在标准C++中引入的。它可以将其中定义的名字隐藏起来,不同的名字空间中可以相同的名字而互不干扰,...
  • nacos服务注册命名空间指定

    千次阅读 2020-07-23 11:20:16
    指定配置命名空间就会到指定命名空间找配置文件,如果一个项目多个环境也可以这么。创建多个命名空间存放对应配置文件。 为什么要指定服务注册命名空间呢? 由于有些公司多个项目都同一个nacos作为注册中心和...
  • php的命名空间

    2019-07-06 22:14:27
    有什么用? 答:命名空间是一种带有限制性描述的关键词,能说明代码是“混”哪片的。他是在5.3版本中才加入的,这个版本号可以说是个分界点,也就是因为命名空间的存在,很多的开源的代码在安装的时候都会限制...
  • 为什么插件制作核心在于重写方法(函数)? 如何优雅地重写方法(函数)? 我们常说的命名空间有什么用? 看了这篇教程,魔改原码不是梦
  • yaf的命名空间

    2021-01-11 05:56:46
    <div><p>两个项目目录,同一个php.ini 一个支持命名空间, 一个不支持。 请问有什么解决办法吗</p><p>该提问来源于开源项目:laruence/yaf</p></div>
  • js命名空间

    2016-05-12 10:46:53
    1.首先为什么js命名空间 在我们的项目中,如果多个人为同一个页面写js的话,命名冲突就可能发生,如果所有的函数都是全局的话,如下: a.js中 function com() { ..... } b.js中 function com() { ........
  • 最近在学习XML Schema,没法很好的分清命名空间的xmlns、targetnamespace的区别,为什么在已经全局命名空间xmlns和定义的命名空间xmlns:prefix后还要加入一个targetnamespace。上StackoverFlow找到一些解释,现在...
  • 如题,在Unity中使用到System.Drawing命名空间,在PC端使用正常,但是发布到了Android不能有什么方法可以使安卓程序可以使用Bitmap类等。</p>
  • 这可以解释为什么qt程序中那么多 namespace Ui{} 第一次是创建 第二次则是为该命名空间增加新的成员 命名空间可以嵌套 所以之后写个人库都可以用命名空间将类写到里面去 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 839
精华内容 335
关键字:

命名空间有什么用