C++命名空间
c++中using的用法

c++中using的用法
using是C++语言中的一个关键词,它用于引入命名空间或类型别名,方便程序员在代码中使用。
1.引入命名空间:
使用using关键字可以将一个命名空间中的所有成员引入到当
前作用域中,方便程序员在代码中使用这些成员,减少代码的书写量。
例如:
```
#include <iostream>
using namespace std; //引入std命名空间
int main()
{
cout << 'Hello, world!' << endl; //可以直接使用cout,而不需要写成std::cout
return 0;
}
```
2.类型别名:
使用using关键字可以定义类型别名,将一个类型的名称重新定义为另一个名称,方便程序员在代码中使用这个别名。
例如:
```
using int32 = int; //定义int32为int类型的别名
int main()
{
int32 num = 100; //可以使用int32代替int类型
return 0;
}
```
使用using关键字可以使代码更加简洁、易读,提高程序员的编码效率。
但同时也需要注意使用时的命名冲突问题,避免引入多个命名空间导致的命名冲突。
C#命名规范

C#命名规范一、类型级单位的命名1、类。
以Class声明的类,都必须以名词或名词短语命名,体现类的作用。
如:Class Indicator当类是一个特性(Attribute)时,以Attribute结尾,当类是一个异常(Exception)时,以Exception结尾:Class ColorSetExceptionClass CauseExceptionAttribute当类只需有一个对象实例(全局对象,比如Application等),必须以Class结尾,如Class ScreenClassClass SystemClass当类只用于作为其他类的基类,根据情况,以Base结尾:MustInherit Class IndicatorBase如果定义的类是一个窗体,那么名字的后面必须加后缀Form,如果是Web窗体,必须加后缀Page:Class PrintForm : Inherits Form '* Windows窗体Class StartPage : Inherits Page '* Web窗体2、枚举和结构同样必须以名词或名词短语命名。
最好体现枚举或结构的特点,如:Enum ColorButtons '以复数结尾,表明这是一个枚举Structure CustomerInfoRecord '以Record结尾,表明这是一个结构体3、委派类型普通的委派类型以描述动作的名词命名,以体现委派类型实例的功能:Delegate Sub DataSeeker (ByVal SeekString As String)用于事件处理的委派类型,必须以EventHandler结尾,如:Delegate Sub DataChangedEventHandler (ByVal Sender As Object, ByVal e As DataChangedEventArgs)4、接口与其他类型不同,接口必须要由I作为前缀,并用形容词命名,突出表现实现接口的类将具有什么能力:Interface ISortable5、模块模块不是类型,他的名称除了必须以名词命名外,必须加以后缀Module: Module SharedFunctionsModule上述所有规则的共同特点是,每个组成名称的词语都必须是大写开头,禁止完全大写或小写的名称。
namespace是什么意思

namespace是什么意思namespace即"命名空间",也称"名称空间" 、"名字空间"。
中的各种语言使用的一种代码组织的形式通过名称空间来分类,区别不同的代码功能同时也是中所有类的完全名称的一部分。
范围所谓namespace,是指标识符的各种可见范围。
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
一:<iostream>和<iostream.h>格式不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
二: 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择:1、直接指定标识符。
例如std::ostream而不是ostream。
完整语句如下: std::cout << std::hex << 3.4 << std::endl;2、使用using关键字。
using std::cout; using std::endl; using std::cin; 以上程序可以写成cout << std::hex << 3.4 << endl;3、最方便的就是使用using namespace std; 例如: using namespace std;这样命名空间std内定义的所有标识符都有效(曝光)。
C#之命名空间关键字:namespace、using

C#之命名空间关键字:namespace、usingnamespace 关键字⽤于声明⼀个范围。
此命名空间范围允许您组织代码并为您提供了创建全局唯⼀类型的⽅法:命名空间名可以是任何合法的标识符。
命名空间名可以包含句号。
即使未显式声明命名空间,也会创建默认命名空间。
该未命名的命名空间(有时称为全局命名空间)存在于每⼀个⽂件中。
全局命名空间中的任何标识符都可⽤于命名的命名空间中。
命名空间隐式具有公共访问权,并且这是不可修改的。
namespacenamespace 关键字⽤于声明⼀个范围。
此命名空间范围允许您组织代码并为您提供了创建全局唯⼀类型的⽅法:命名空间名可以是任何合法的标识符。
命名空间名可以包含句号。
即使未显式声明命名空间,也会创建默认命名空间。
该未命名的命名空间(有时称为全局命名空间)存在于每⼀个⽂件中。
全局命名空间中的任何标识符都可⽤于命名的命名空间中。
命名空间隐式具有公共访问权,并且这是不可修改的。
在两个或更多的声明中定义⼀个命名空间是可以的。
如在同⼀个⽂件中分别将两个类定义为 MyCompany 命名空间的⼀部分:// keywords_namespace.csnamespace Hunts.Test{class MyClass1{//}}namespace Hunts.Test{class MyClass2{//}}⽰例:(略)usingusing 关键字有两个主要⽤途:作为指令,⽤于为命名空间创建别名或导⼊其他命名空间中定义的类型。
using namespace;using alias = type|namespace;// Type:您想通过 alias 表⽰的类型。
这种做法可以⽤于处理在同时引⽤包含了相同名称的类的命名空间,并需要使⽤⽽引发的冲突。
(见⽰例1)// namespace:您想通过 alias 表⽰的命名空间。
或者是⼀个命名空间,它包含您想在⽆需指定完全限定名的情况下使⽤的类型。
C#命名空间(namespace)不可不知的那些事

C#命名空间(namespace)不可不知的那些事 命名空间本质上就是⼀个逻辑分组,就和我们⽂件夹分组是⼀致的,允许我们将相关的类型集合在⼀起。
命名空间是⼀个⽐较通⽤的概念,在很多语⾔⾥⾯都存在,只不过可能存在⼀些细微差别以及使⽤不同的名称。
⽐如Java就叫包(package)。
接下来,我们将从以下五个⽅⾯来讲解命名空间: 定义命名空间使⽤命名空间正确理解命名空间含义使⽤命名空间alias解决简单类名冲突使⽤extern alias解决Assembly中的完整类名冲突定义命名空间 命名空间的定义很简单,是以关键字namespace(命名空间的英⽂名)开始,后跟命名空间的名字和⼀对⼤括号。
⼤括号⾥的内容都属于这个命名空间。
格式如下: namespace namespace_name { } namespace_name是以点号(.)作为层级隔离的。
⽐如System.IO就可以认为System是第⼀层命名空间,IO是第⼆层命名空间。
由于命名空间其实就是⼀个逻辑分组,所以namespace这个关键字,我们可以理解为“如果不存在namespace_name这个命名空间,就创建⼀个。
如果存在,就使⽤这个命名空间”。
因此,我们是可以在多个地⽅定义同⼀个命名空间的,只要保证同⼀个命名空间中的内容不冲突即可,如下: namespace System.IO { class MemoryStream {} } namespace System.IO { class BufferedStream {} }使⽤命名空间 在程序中使⽤特定类型的时候,我们需要使⽤完整的限定名,⽐如System.IO.MemoryStream。
但是如果每次都这么写,除了增加了开发⼈员打字的成本,毫⽆益处。
因此我们可以使⽤using关键字来表明我们需要使⽤某个命名空间中的类型。
如下: //使⽤完整限定名 public static void Main() { System.Text.StringBuilder sb=new System.Text.StringBuilder(); } //使⽤using 关键字 using System.Text; public static void Main() { StringBuilder sb=new StringBuilder(); } using关键字,其实是告诉编译器可以尝试在这个特定的命名空间中查找类型。
c#中的名称空间(namespace)

9. 名称空间9.1 编译单元9.2 名称空间声明9.3 使用指示9.3.1 使用别名指示9.3.2 使用名称空间指示9.4 名称空间成员9.5 类型声明C#程序用名称空间来组织。
名称空间用在程序的“内部”组织系统,也用在“外部”组织系统-一种表现输出到其他程序的程序元素。
使用指示使得使用名称空间变得非常容易。
9.1 编译单元一个编译单元定义了一个源文件全部的结构。
一个编译单元由没有或多个后面跟着没有或多个名称空间成员声明的使用指示组成。
compilation-unit: using-directivesoptnamespace-member-declarationsopt一个C#程序包括一个或多个编译单元,每个都包含在分立的源文件中。
当C#程序被编译,所有的编译单元都一起处理。
这样,编译单元可以互相依靠,有可能出现循环的形式。
编译单元的使用指示影响那个编译单元的名称空间成员声明,但是不会对其他编译单元有影响。
一个程序的每个编译单元的名称空间成员声明把成员放到一个单独的声明域中,称为全局名称空间。
例如:File A.cs:class A {}File B.cs:class B {}两个编译单元合成一个单独的全局名称空间,在这种情况下声明了两个有完全名称的A和B。
因为两个编译单元指向同一个声明域,如果每个都包含一个有相同名称的成员的声明就会产生错误。
9.2 名称空间声明一个名称空间声明由关键词namespace,跟着一个名称空间名称和主体,最后有一个可选的分号组成。
namespace-declaration: namespace qualified-identifiernamespace-body ;optqualified-identifier: identifier qualified-identifier . identifiernamespace-body: { using-directivesoptnamespace-member-declarations}opt一个名称空间声明也许会在编译单元中作为最高级别的声明发生,或者在另一个名称空间声明中作为一个成员声明。
C__Using用法三则

用法三则C# UsingC#关键字的用法不单只有一种方法的。
现在我总结了一下Using和New的用法,顺便也是为了帮助大家更好的理解C# using用法。
Using(1)引用命名空间using作为引入命名空间指令的用法规则为:using Namespace;在.NET程序中,最常见的代码莫过于在程序文件的开头引入System命名空间,其原因在于System命名空间中封装了很多最基本最常用的操作,下面的代码对我们来说最为熟悉不过:using System;这样,我们在程序中就可以直接使用命名空间中的类型,而不必指定详细的类型名称。
using 指令可以访问嵌套命名空间。
关于:命名空间命名空间是.NET程序在逻辑上的组织结构,而并非实际的物理结构,是一种避免类名冲突的方法,用于将不同的数据类型组合划分的方式。
例如,在.NET中很多的基本类型都位于System命名空间,数据操作类型位于System.Data命名空间,(2)创建命名空间别名using为命名空间创建别名的用法规则为:using alias = namespace | type;其中namespace表示创建命名空间的别名;而type表示创建类型别名。
例如,在.NET Office 应用中,常常会引入Microsoft.Office.Interop.Word.dll程序集,在引入命名空间时为了避免繁琐的类型输入,我们通常为其创建别名如下:using MSWord = Microsoft.Office.Interop.Word;这样,就可以在程序中以MSWord来代替Microsoft.Office.Interop.Word前缀,如果要创建Application对象,则可以是这样,而且还有一个好处就是,在一个.CS文件中引入了不同的命名空间但是相同的类名的时候,用别名就可以解决这问题了。
(3)强制资源清理用途:清理非托管资源,不受GC控制的资源。
命名规范_C (Sharp)

命名规范_C(Sharp)1.命名规范a)类【规则1-1】使用Pascal规则命名类名,即首字母要大写。
【规则1-2】使用能够反映类功能的名词或名词短语命名类。
【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。
【规则1-4】自定义异常类应以Exception结尾。
【规则1-5】文件名要能反映类的内容,最好是和类同名。
b)类字段【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。
【规则2-2】类字段变量名前可加“_”前缀。
【规则2-3】坚决禁止在普通变量前加“m_”(这是VC老命名规则)。
c)方法【规则3-1】方法名采用Pascal规则,第一个字符要大写。
【规则3-2】方法名应使用动词或动词短语。
【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。
d)属性【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。
【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。
e)参数【规则5-1】参数采用camel规则命名,且首字符小写。
【规则5-2】使用描述性参数名称,参数名称应当具有最够的说明性。
【规则5-3】不要给参数加匈牙利语类型表示法的前缀。
【规则5-4】检查方法所有输入参数的有效性。
f)常量【规则6-1】只读常量使用Pascal命名规则,即首字母大写。
【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。
【规则6-3】枚举值从小到大顺序定义。
【规则6-4】静态字段或属性采用Pascal规则,即首字符大写。
g)接口【规则7-1】接口定义使用Pascal规则,且必须以大写“I”开头。
【规则7-2】接口名称要有意义,中间不要有下划线“_”等字符。
【规则7-3】如果类实现了接口,名称尽量和接口相同,只是省掉“I”字符。
h)事件【规则8-1】委托名称采用Pascal规则,即首字符大写。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C++命名空间namespace
虽然使用命名空间的方法,有多种可供选择。
但是不能贪图方便,一味使用using 指令,这样就完全背离了设计命名空间的初衷,也失去了命名空间应该具有的防止名称冲突的功能。
一般情况下,对偶尔使用的命名空间成员,应该使用命名空间的作用域解析运算符来直接给名称定位。
而对一个大命名空间中的经常要使用的少数几个成员,提倡使用using声明,而不应该使用using编译指令。
只有需要反复使用同一个命名空间的许多数成员时,使用using编译指令,才被认为是可取的。
例如,如果一个程序(如上面的outi.cpp)只使用一两次cout,而且也不使用std命名空间中的其他成员,则可以使用命名空间的作用域解析运算符来直接定位。
如:
#include <iostream>
……
std::cout << "Hello, World!" << std::endl;
std::cout << "Outer::i = " << Outer::i << ", Inner::i = " << Outer::Inner::i << std::endl;
又例如,如果一个程序要反复使用std命名空间中的cin、cout 和cerr(如上面的outi.cpp),而不怎么使用其他std命名空间中的其他成员,则应该使用using 声明而不是using指令。
如:
#include <iostream>
……
using std::cout;
cout << "Hello, World!" << endl;
cout << "Outer::i = " << Outer::i << ", Inner::i = " << Outer::Inner::i << endl;
4)命名空间的名称
<!--[if !supportLists]-->l <!--[endif]-->命名空间别名
标准C++引入命名空间,主要是为了避免成员的名称冲突。
若果用户都给自己的命名空间取简短的名称,那么这些(往往同是全局级的)命名空间本身,也可能发生名称冲突。
如果为了避免冲突,而为命名空间取很长的名称,则使用起来就会不方便。
这是一个典型的两难问题。
标准C++为此提供了一种解决方案——命名空间别名,格式为:namespace 别名= 命名空间名;
例如:(AT&T美国电话电报公司)
namespace American_Telephone_and_Telegraph { // 命名空间名太长
class String {
String(const char*);
// ……
}
}
American_Telephone_and_Telegraph::String s1 // 使用不方便
= new American_Telephone_and_Telegraph::String("Grieg");
namespace ATT = American_Telephone_and_Telegraph; // 定义别名
ATT::String s2 = new ATT::String("Bush"); // 使用方便ATT::String s3 = new ATT::String("Nielsen");
<!--[if !supportLists]-->l <!--[endif]-->无名命名空间
标准C++引入命名空间,除了可以避免成员的名称发生冲突之外,还可以使代码保持局部性,从而保护代码不被他人非法使用。
如果你的目的主要是后者,而且又为替命名空间取一个好听、有意义、且与别人的命名空间不重名的名称而烦恼的话,标准C++还允许你定义一个无名命名空间。
你可以在当前编译单元中(无名命名空间之外),直接使用无名命名空间中的成员名称,但是在当前编译单元之外,它又是不可见的。
无名命名空间的定义格式为:
namespace {
声明序列可选
}
实际上,上面的定义等价于:(标准C++中有一个隐含的使用指令)
namespace $$$ {
声明序列可选
}
using namespace $$$;
例如:
namespace {
int i;
void f() {/*……*/}
}
int main() {
i = 0; // 可直接使用无名命名空间中的成员i
f(); // 可直接使用无名命名空间中的成员f()
}。