-
.Net命名空间使用介绍
2018-02-27 10:47:21复制地址:http://blog.csdn.net/chelen_jak/article/details/7703144.NET命名空间使用介绍 在ASP.NET中,.NET Framework为我们提供了丰富的基类,为了能在程序中引用这些基类,我们必须先引用这些基类的命名空间。...复制地址:http://blog.csdn.net/chelen_jak/article/details/7703144
.NET命名空间使用介绍
在ASP.NET中,.NET Framework为我们提供了丰富的基类,为了能在程序中引用这些基类,我们必须先引用这些基类的命名空间。我们都知道,如果我们想在C++中引用一个文件函数时,我必须先调用该文件,例如<#include studio.h>,其实它和ASP.NET中命名空间的引用是同一原理。但是它们又有本质上的区别。
在ASP.NET中,命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的开发人员这两个类是如何相关的以及如何使用它们:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
namespace vlink
{public class Agent
}把一个类型放在命名空间中,可以有效地给这个类型指定一个较长的名称,该名称包括类型的命名空间,后面是句点(.)和类的名称。在上面的例子中,Agent全名是vlink.Agent。这样,有相同短名的不同的类就可以在同一个程序中使用了。
也可以在命名空间中嵌套其他命名空间,为类型创建层次结构:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
namespace vlink
{namespace Agent
{namespace CallBack
{}
}
}
每个命名空间名都由它所在命名空间的名称组成,这些名称用句点分隔开,首先是最外层的命名空间,最后是它自己的短名。所以Agent命名空间的全名是vlink.Agent,CallBack类的全名是vlink.Agent.CallBack。
注意不允许在另一个嵌套的命名空间中声明多部分的命名空间。
命名空间与程序集(Assembly)无关。同一个程序集中可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。
using语句
显然,命名空间相当长,键入起来很繁琐,用这种方式指定某个特定的类也是不必要的。如本章开头所述,C#允许简写类的全名。为此,要在文件的顶部列出类的命名空间,前面加上using关键字。在文件的其他地方,就可以使用其类型名称来引用命名空间中的类型了:
using System;
using vlink;
如前所述,所有的C#源代码都以语句using System; 开头,这仅是因为Microsoft提供的许多有用的类都包含在System命名空间中。
如果using指令引用的两个命名空间包含同名的类,就必须使用完整的名称(或者至少较长的名称),确保编译器知道访问哪个类型,例如,类CallBack同时存在于Agent和vlink命名空间中,如果要在命名空间Agent中创建一个类Test,并在该类中实例化一个CallBack类,就需要指定使用哪个类。
因为using语句在C#文件的开头,C和C++也把#include放在这里,所以从C++迁移到C#的程序员常把命名空间与C++风格的头文件相混淆。不要犯这种错误,using语句在这些文件之间并没有真正建立物理链接。C#也没有对应于C++头文件的部分。
命名空间的别名
using关键字的另一个用途是给类和命名空间指定别名。如果命名空间的名称非常长,又要在代码中使用多次,但不希望该命名空间的名称包含在using指令中(例如,避免类名冲突),就可以给该命名空间指定一个别名,其语法如下:
using alias = NamespaceName;
ASP.NET中各命名空间及作用:
命名空间 描述Microsoft.CSharp 支持C#语言编译和生成代码
System 包含了基础类,用于定义类型/数组/字符串/事件/事件处理程序/异常处理/接口/数据类型转换/数学计算/应用程序环境管理等等.
System.Coolections 包含了一组用于管理对象集合(例如列表/队列/数组/哈希表/字典等)的类
System.Data 主要包括了组成ADO.NET体系结构的类
System.diagnostics 提供用于调试/跟踪,以及与系统进程/事件日志/性能计数器进行交互的类
System.Drawing 提供访问GDI+基本图形功能(在System.Drawing以下的命名空间,包括System.Drawing.Drawing2D和System.Drawing.Text等,提供了更高级和更特殊的GDI+图形功能)的类
System.IO 包含了用于读写数据流/文件和普通输入/输出(I/O)功能的类型和类
System.Reflection 包括提供类型检测和动态绑定对象功能的类和接口
System.reflection.Emit 生成动态程序集
System.Text 包含用于字符编码/将字符块转换为字节快/将字节块转换为字符块等功能的对象
System.Text.RegularExpressions 包含了提供访问.NET框架正则表达引擎的类
System.Timer 提供了Timer组件
System.Web 包含了用于实施浏览器/服务器通信和其他Web相关功能的类
System.Web.Services 包含了用于创建和消费Web服务的类
System.Web.UI 包含了用于创建Web页和控件的用户接口的类和接口
System.Windows.Forms 包含了用于创建基于WINDOWS的用户接口的类
System.XML 提供了支持处理XML的类 -
.NET命名空间使用介绍
2012-06-29 16:53:27.NET命名空间使用介绍 在ASP.NET中,.NET Framework为我们提供了丰富的基类,为了能在程序中引用这些基类,我们必须先引用这些基类的命名空间。我们都知道,如果我们想在C++中引用一个文件函数时,我必须先调用...原文:http://hi.baidu.com/wqk1025/blog/item/1ea41a0ff13136226159f3dd.html
.NET命名空间使用介绍
在ASP.NET中,.NET Framework为我们提供了丰富的基类,为了能在程序中引用这些基类,我们必须先引用这些基类的命名空间。我们都知道,如果我们想在C++中引用一个文件函数时,我必须先调用该文件,例如<#include studio.h>,其实它和ASP.NET中命名空间的引用是同一原理。但是它们又有本质上的区别。
在ASP.NET中,命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,在另一个文件中执行相关操作时,就可以在同一个命名空间中包含它,创建一个逻辑组合,告诉使用类的开发人员这两个类是如何相关的以及如何使用它们:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
namespace vlink
{public class Agent
}把一个类型放在命名空间中,可以有效地给这个类型指定一个较长的名称,该名称包括类型的命名空间,后面是句点(.)和类的名称。在上面的例子中,Agent全名是vlink.Agent。这样,有相同短名的不同的类就可以在同一个程序中使用了。
也可以在命名空间中嵌套其他命名空间,为类型创建层次结构:
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
namespace vlink
{namespace Agent
{namespace CallBack
{}
}
}
每个命名空间名都由它所在命名空间的名称组成,这些名称用句点分隔开,首先是最外层的命名空间,最后是它自己的短名。所以Agent命名空间的全名是vlink.Agent,CallBack类的全名是vlink.Agent.CallBack。
注意不允许在另一个嵌套的命名空间中声明多部分的命名空间。
命名空间与程序集(Assembly)无关。同一个程序集中可以有不同的命名空间,也可以在不同的程序集中定义同一个命名空间中的类型。
using语句
显然,命名空间相当长,键入起来很繁琐,用这种方式指定某个特定的类也是不必要的。如本章开头所述,C#允许简写类的全名。为此,要在文件的顶部列出类的命名空间,前面加上using关键字。在文件的其他地方,就可以使用其类型名称来引用命名空间中的类型了:
using System;
using vlink;
如前所述,所有的C#源代码都以语句using System; 开头,这仅是因为Microsoft提供的许多有用的类都包含在System命名空间中。
如果using指令引用的两个命名空间包含同名的类,就必须使用完整的名称(或者至少较长的名称),确保编译器知道访问哪个类型,例如,类CallBack同时存在于Agent和vlink命名空间中,如果要在命名空间Agent中创建一个类Test,并在该类中实例化一个CallBack类,就需要指定使用哪个类。
因为using语句在C#文件的开头,C和C++也把#include放在这里,所以从C++迁移到C#的程序员常把命名空间与C++风格的头文件相混淆。不要犯这种错误,using语句在这些文件之间并没有真正建立物理链接。C#也没有对应于C++头文件的部分。
命名空间的别名
using关键字的另一个用途是给类和命名空间指定别名。如果命名空间的名称非常长,又要在代码中使用多次,但不希望该命名空间的名称包含在using指令中(例如,避免类名冲突),就可以给该命名空间指定一个别名,其语法如下:
using alias = NamespaceName;
ASP.NET中各命名空间及作用:
命名空间 描述Microsoft.CSharp 支持C#语言编译和生成代码
System 包含了基础类,用于定义类型/数组/字符串/事件/事件处理程序/异常处理/接口/数据类型转换/数学计算/应用程序环境管理等等.
System.Coolections 包含了一组用于管理对象集合(例如列表/队列/数组/哈希表/字典等)的类
System.Data 主要包括了组成ADO.NET体系结构的类
System.diagnostics 提供用于调试/跟踪,以及与系统进程/事件日志/性能计数器进行交互的类
System.Drawing 提供访问GDI+基本图形功能(在System.Drawing以下的命名空间,包括System.Drawing.Drawing2D和System.Drawing.Text等,提供了更高级和更特殊的GDI+图形功能)的类
System.IO 包含了用于读写数据流/文件和普通输入/输出(I/O)功能的类型和类
System.Reflection 包括提供类型检测和动态绑定对象功能的类和接口
System.reflection.Emit 生成动态程序集
System.Text 包含用于字符编码/将字符块转换为字节快/将字节块转换为字符块等功能的对象
System.Text.RegularExpressions 包含了提供访问.NET框架正则表达引擎的类
System.Timer 提供了Timer组件
System.Web 包含了用于实施浏览器/服务器通信和其他Web相关功能的类
System.Web.Services 包含了用于创建和消费Web服务的类
System.Web.UI 包含了用于创建Web页和控件的用户接口的类和接口
System.Windows.Forms 包含了用于创建基于WINDOWS的用户接口的类
System.XML 提供了支持处理XML的类 -
php如何通过命名空间使用其他文件中的变量
2015-12-11 05:16:02在c.php文件中可以通过命名空间np1使用文件a.php中的常量 foofoo和类C1但是无法通过命名空间使用变量$foo . 比如c.php 这样 require "a.php" ; require "b.php"; $baz = new np1\C1("leon",time()); $qux... -
c++命名空间使用
2015-06-19 03:43:04c++引入命名空间是为了避免重名的问题比如函数和变量重名,比如一下代码#include <IOSTREAM> namespace a { int b=3; } namespace c { int b=5; } int main() { using namespace std; using namespace a; ...c++引入命名空间是为了避免重名的问题比如函数和变量重名,比如一下代码
#include <IOSTREAM> namespace a { int b=3; } namespace c { int b=5; } int main() { using namespace std; using namespace a; using namespace c; // int b=9; // cout<<"b:"<<b<<" a::b:"<<a::b<<" c::b:"<<c::b<<endl; cout<<"b:"<<b; return 0; }
1.代码16/17行将命名空间a,c中的变量b释放到函数main中,导致20行输出变量b的值时出现歧义,此时编译错误:
error C2872: ‘b’ : ambiguous symbol
2. 若18行没有注释掉即使用main函数定义并初始化的变量b而不使用命名空间a或c中的变量b,则输出b:9
3.如果想用命名空间a,c中的变量b,可以使用a::b和c::b(注释掉20行,用19行输出变量b),即此时代码为#include <IOSTREAM> namespace a { int b=3; } namespace c { int b=5; } int main() { using namespace std; using namespace a; using namespace c; int b=9; cout<<"b:"<<b<<" a::b:"<<a::b<<" c::b:"<<c::b<<endl; // cout<<"b:"<<b; return 0; }
这时执行结果为
当然此时using namespace a;和using namespace c;可以注释掉或不写因为此时命名空间a/c是全局的,执行结果和上面是相同的,但using namespace std是需要的,否则出现cout,endl等未定义的错误
4.命名空间也要先定义再使用#include <IOSTREAM> using namespace std; int main() { // using namespace a; // using namespace c; int b=9; cout<<"b:"<<b<<" a::b:"<<a::b<<" c::b:"<<c::b<<endl; // cout<<"b:"<<b; // cout<<" a::b:"<<a::b<<" c::b:"<<c::b<<endl; return 0; } namespace a { int b=3; } namespace c { int b=5; }
否则编译错误:
总结:关键是若要用到main函数中的变量b则需要在main函数中定义变量b并初始化(int b=9),若需要用到的是别的命名空间的变量b则需要用诸如a::b或c::b指明是使用命名空间a或c中的变量b,using namespace a或using namespace c写在main函数中/main函数外/不写是不重要的,但是using namespace std必须写(main函数中或main函数外都行),否则编译出现错误:
-
JavaScript Namespace命名空间使用说明
2017-02-28 10:49:02什么是命名空间?语言使用的一种代码组织的形式 通过名称空间来分类,区别不同的代码功能 。无论项目大小,如果一开始不严格按照命名空间来编写程序,当你写到上万行JavaScript程序的时候,我相信你一定会后悔你的...什么是命名空间?语言使用的一种代码组织的形式 通过名称空间来分类,区别不同的代码功能 。无论项目大小,如果一开始不严格按照命名空间来编写程序,当你写到上万行
JavaScript
程序的时候,我相信你一定会后悔你的object
或者function
命名已经很混乱了。所以建议童鞋们一开始就要养成命名空间的习惯,比如你要开发一个项目,功能可能如下:// 配置 var config = {}; // 前台 config.front = {}; // 后台 config.admin = {}; // 后台数据 config.admin.data = {}; // 后台模块 config.admin.module = {}; // 后台颜色模块 config.admin.module.color = {}; // 后台图片模块 config.admin.module.images = {}; // 后台搜索模块 config.admin.module.search = {}; // 给后台颜色模块加背景颜色改变功能 config.admin.module.color.changeBgColor = function(color) { document.body.style.background = color; }; // 可以这么调用 config.admin.module.color.changeBgColor('#F30');
但是,以上声明命名空间的方式看起来不直观,我们来一个比较直观的结构化命名方式:
// 配置 var config = { // 前台 front : {}, // 后台 admin : { // 数据层 data : {}, // 模块层 module : { // 颜色模块 color : { // 背景颜色改变功能 changeBgColor : function(color){ document.body.style.background = color; }, // 前景颜色改变功能 changeFnColor : function(color){ document.body.style.color = color; } }, // 图片模块 images : { }, // 搜索模块 search : { } } } }; // 可以这么调用 config.admin.module.color.changeBgColor('#F30');
以上的声明方式就把结构化很好的呈现出来了,利用命名空间非常方便的管理维护拓展程序,当多人开发或者JavaScript代码写的数量巨大时不用担心命名冲突的问题。我们也可以写一个命名空间的功能,省去以上复杂的声明方式。
比如以上例子实际上我只是暂时用到
config.admin.module.color.changeBgColor
这个功能,那么我就需要先定义config,接着admin,然后module
,最后是color.changeBgColor
,比较繁琐,于是我们可以写一个命名空间注册的功能,直接注册就能用:// 命名空间注册函数 var namespace = { reg : function(s){ var arr = s.split('.'); var namespace = window; for(var i=0,k=arr.length;i<k;i++){ if(typeof namespace[arr[i]] == 'undefined'){ namespace[arr[i]] = {}; } namespace = namespace[arr[i]]; } }, del : function(s){ var arr = s.split('.'); var namespace = window; for(var i=0,k=arr.length;i<k;i++){ if(typeof namespace[arr[i]] == 'undefined'){ return; }else if( k == i+1 ){ delete namespace[arr[i]]; return; }else{ namespace = namespace[arr[i]]; } } } };
可以这样注册命名空间
// 先注册命名空间 namespace.reg('config.admin.module.color'); // 添加功能 config.admin.module.color.changeBgColor = function(color){ document.body.style.background = color; }; // 调用功能 config.admin.module.color.changeBgColor('#F30'); // 删除命名空间 namespace.del('config.admin.module.color');
命名空间没有唯一规则,只有根据每个项目以及项目负责人对程序的分析然后给出一定命名规则,比如有些项目根据功能命名空间,有些项目根据负责人名命名空间等等。但无论采用哪种方式,合理的命名空间在你应对大项目时多人合作时不会因为命名冲突而重构。因此你的站点中的js文件将有一篇是第一位引入的namespace.js,它定义了这个项目所有的命名空间与管理。
-
C++中命名空间使用
2004-11-01 17:13:00C++中命名空间使用 随着程序规模的扩大,命名冲突的问题越来越严重,在同一个程序甚至是一个程序的一个模块都会出现同名的情况,特别是那些多人开发的程序中这种情况更严重,为了解决这个问题,各种语言都有相应的... -
自定义命名空间使用技巧之——命名空间与XML
2010-11-05 09:24:00今天我要讲的有个小技巧也是刚整理出来的一种命名空间来方便解析XML的方法。有朋友已经从LEX的MXML中领悟到这种使用方法的话请勿见笑。 <br />一、复杂类型变量值的转换 在XML中我们都知道在用AS3的XML类 -
AS3中命名空间使用要点
2014-01-04 23:57:14最近利用命名空间来优化框架接口的可见性,当命名空间应用于setter和getter方法时,有点问题。 public function get data():Object { return _data; } MaliuLib function set data(value:Object):void { _data = ... -
TP5.1自定义命名空间使用命令行添加文件(修改源码)
2018-10-29 15:03:04在上篇文章中,我们做了自定义命名空间,但是使用命令行创建文件的时候,会发现,会一直创建在app的命名空间下,下来我们处理一下这个问题https://blog.csdn.net/fangkang7/article/details/83476420 ... -
tp框架命名空间使用(namespace,use,as,\)
2019-08-15 16:01:51TP命名空间 我的理解:作用就是如目录,区分开各文件 目录=文件夹 namespace:路径写到目录名;如:controller是对应文件的上级目录 namespace app\pc\controller; use:路径写到类名;如:Controller是类名 ... -
3种命名空间的使用方式
2018-07-31 08:54:06以命名空间std为例 , 记录一下看书过程中遇到的各种命名空间使用方式 : using namespace std; std::cout , std::endl. using std::cout; using std::endl; -
命名空间
2015-01-16 11:38:50命名空间:命名空间是用来组织和重用代码的编译单元,其...5:全局函数的命名空间使用; 6:命名空间声明,让命名空间中的部分内容暴露出来; 下面用一段代码对上面问题作一个代码演示: #include //命名空间的定 -
Spring(04)——p命名空间和c命名空间
2017-07-06 09:05:224 p命名空间和c命名空间在通过构造方法或set方法给bean注入关联项时通常是通过constructor...4.1 p命名空间使用p命名空间时需要先声明使用对应的命名空间,即在beans元素上加入xmlns:p="http://www.springframework.org -
nacos命名空间的使用
2020-09-15 22:08:55我们为什么要用命名空间呢? 因为在使用过程中 , 我们在开发过程中一般是用的dev环境 , 而在开发...让我们了解一下我们该如何使用nacos的命名空间吧 创建命名空间 最终读取 修改配置文件 , 添加命名空间 ... -
nacos使用-命名空间
2020-12-23 10:39:26nacos使用-命名空间 文章目录nacos使用-命名空间前言一、新建命名空间二、配置使用1.获取命名空间ID2.项目配置3.启动测试总结 前言 nacos命名空间的新建及使用 一、新建命名空间 二、配置使用 1.获取命名空间ID ... -
什么是命名空间,为什么要使用命名空间?
2019-07-05 14:22:57概要: ...3. PHP 5.3 及以上才能使用命名空间 名词: 关键字:namespace 用来声明 本PHP文件的命名空间 常量:NAMESPACE 用来返回当前命名空间的名称 默认为空字符串 操作符: use 默认以最后一个... -
spring配置文件中的p和c命名空间的使用
2019-01-09 23:35:171、p命名空间和c命名空间 在通过构造方法或set方法给bean注入关联项时通常是通过constructor-arg元素和property元素来定义的。...使用p命名空间时需要先声明使用对应的命名空间,即在beans元素上加入xmlns:... -
建议124:考虑在命名空间中使用复数
2016-09-12 10:57:37如果有一组功能相近的类型被分到了同一个命名空间下,可以考虑为命名空间使用复数。 最典型的例子有,在FCL中,我们需要把所有的非泛型集合类集中在一起存放,所以就有了System.Collections命名空间。这样的命名... -
C++命名空间的使用
2019-08-23 16:06:55不同的命名空间可以包含相同的变量名/函数名,当使用某个头文件下的某变量/函数时,需要指定其所在的命名空间。格式:[name]::[var/fun name]。如果频繁使用此变量/函数,可以加上语句using namespace [name],则... -
namespace命名空间的使用
2018-08-01 10:04:27一、何为命名空间 PHP 命名空间(namespace)是在PHP 5.3中加入的。“什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组... -
命名空间的使用
2013-11-24 11:57:51命名空间的作用:避免名字冲突和解决命名空间污染问题 命名空间的定义 namespace namespace_name { //declarations } 例: C++代码 /* file:my.h author:longsy */ ... -
vuex 命名空间的使用
2019-02-01 19:22:20vuex 命名空间的使用 废话不多说,直接上代码 // store 文件下的index.js import city from './module/city' import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) export default new Vuex.Store({ ... -
Spring使用P命名空间
2019-06-18 11:48:46使用P命名空间 idea使用时需在applicationContext.xml头部配置 xmlns:p=“http://www.springframework.org/schema/p” 为了简化 XML 文件的配置,越来越多的 XML 文件采用属性而非子元素配置信息。 Spring 从 ... -
命名空间的自定义与使用
2019-02-16 22:33:44命名空间的自定义与使用 目的 为了更好换的控制标识符的作用域,标准C++引入了关键字namespace(命名空间/名域)。 命名空间的自定义与使用 #include <iostream> /** * 定义一个简单的命名空间... -
namespace 命名空间
2015-01-22 16:23:04主要介绍命名空间使用方法,或者说是使用命名空间小窍门。 命名空间可以简单将一些命名(name)用另一个命名打包封装起来。比方说: namespace net { class Socket { ... }; } ... net::Socket socket;... -
C#之基础4---①什么是命名空间,为什么要使用命名空间,命名空间与类的区别
2019-10-22 14:33:331、什么是命名空间? 命名空间设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明...2、为什么要使用命名空间? 就像上面定义里说的, 在较大的项目中...