-
2021-12-07 10:52:47
命名空间的设计目的是:使相同的命名不互相冲突。
一、定义命名空间
命名空间的定义是以关键字 namespace 开始,后跟命名空间的名称,如下所示:
namespace namespace_name { // 代码声明 }
为了调用支持命名空间版本的函数或变量,会把命名空间的名称置于前面,如下所示:
namespace_name.item_name;
二、using 关键字
using 关键字表明程序使用的是给定命名空间中的名称。
例如,System 命名空间,其中定义了类 Console。
System.Console.WriteLine("Hello there");
如果使用 using 命名空间指令,这样在使用的时候就不用在前面加上命名空间名称。
Console.WriteLine ("Hello there");
三、嵌套命名空间
命名空间可以被嵌套。
namespace namespace_name1 { // 代码声明 namespace namespace_name2 { // 代码声明 } }
使用点(.)运算符访问嵌套的命名空间的成员。
using System; using SomeNameSpace; using SomeNameSpace.Nested; namespace SomeNameSpace { public class MyClass { static void Main() { Console.WriteLine("In SomeNameSpace"); Nested.NestedNameSpaceClass.SayHello(); } } // 内嵌命名空间 namespace Nested { public class NestedNameSpaceClass { public static void SayHello() { Console.WriteLine("In Nested"); } } } }
更多相关内容 -
C#命名空间与java包的区别分析
2020-09-03 18:41:30主要介绍了C#命名空间与java包的区别,较为详细的分析了C#命名空间与java包的相同点与不同点,非常具有实用价值,需要的朋友可以参考下 -
C#命名空间实例附CS代码
2021-06-25 14:47:14命名空间在多个面对对象的语言中有应用,例如JAVA,C ,C#。本文主要记录了在C#中如何调用不同命名空间的public class。 如果说类是对属性和方法的封装,那么命名空间就是对各个类的进一步封装。在同一命名空间中,... -
C# 命名空间(Namespace)相关知识总结
2020-08-19 01:09:48主要介绍了C# 命名空间(Namespace)的相关知识,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以参考下 -
c# 命名空间和程序集
2021-01-20 06:50:11上面的写法很繁琐,使用using语句引入命名空间: using System.Text; StringBuilder sb = new StringBuilder(); 对于编译器来说,命名空间就是为一个类型附加一些分隔符号,使名称更有唯一性。 c#的using指令是可选... -
c#命名空间
2020-12-22 14:17:41System.Transactions命名空间注意:此命名空间在 .NET Framework 2.0 版中是新增的。使用 System.Transactions命名空间包含的类可以编写自己的事务应用程序和资源管理器。具体地说,可以创建和参与(与一个或多个参与...System.Transactions
命名空间
注意:此命名空间在 .NET Framework 2.0 版中是新增的。
使用 System.Transactions
命名空间包含的类可以编写自己的事务应用程序和资源管理器。具体地说,可以创建和参与(与一个或多个参与者)本地或分布式事务。
System.EnterpriseServices
命名空间
System.EnterpriseServices
命名空间为企业应用程序提供重要的基础结构。COM+ 为企业环境中部署的组件编程模型提供服务结构。该命名空间向 .NET 对象提供对
COM+ 服务的访问,COM+ 服务令 .NET Framework 对象更适用于企业应用程序。
System.Data
命名空间
System.Data 命名空间提供对表示 ADO.NET
结构的类的访问。通过 ADO.NET 可以生成一些组件,用于有效管理多个数据源的数据。
System.Data.OracleClient
命名空间
System.Data.OracleClient 命名空间是用于
Oracle 的 .NET Framework 数据提供程序。
用于 Oracle 的 .NET Framework 数据提供程序描述了用于在托管空间中访问
Oracle 数据源的类集合。使用 OracleDataAdapter 类可以填充驻留在内存中的 DataSet,查询该数据集以及使用该数据集更新数据源。
Accessibility
命名空间
Accessibility 及其公开的所有成员都属于组件对象模型
(COM) 辅助功能接口的托管包装的一部分。
System.Configuration
命名空间
System.Configuration
命名空间包含提供用于处理配置数据的编程模型的类型
System.Configuration.Install
命名空间
System.Configuration.Install
命名空间提供类,这些类使您可以为自己的组件编写自定义安装程序。Installer
类是 .NET Framework 中所有自定义安装程序的基类。 通过 Installer.Installers
属性,一个安装程序可包含其他安装程序的集合作为其子级。执行安装程序时,将循环通过其子级,并调用
System.Configuration.Install.Installer.Install、System.Configuration.Install.Installer.Commit、System.Configuration.Install.Installer.Rollback
或 System.Configuration.Install.Installer.Uninstall。有关
Installers 集合中对象的示例,请参见 EventLogInstaller。 Context 属性包含关于安装的信息。例如,关于安装的日志文件位置的信息,保存
Uninstall
方法所要求信息的文件的位置,以及运行可执行安装文件时输入的命令行。有关可执行安装文件的示例,请参见 安装程序工具
(Installutil.exe)。
Install、Commit、Rollback
和 Uninstall 方法并不总是在 Installer
的同一实例上调用。例如,可以使用某 Installer 来安装和提交应用程序,然后释放对该
Installer 的引用。以后卸载该应用程序时将创建对
Installer 的新引用,这意味着在 Installer
的另一个实例上调用 Uninstall 方法。因此,不要在安装程序中保存计算机的状态。而请使用
IDictionary,它可跨调用保留并传递给
Install、Commit、Rollback
和 Uninstall 方法。
System.Deployment.Application
命名空间
注意:此命名空间在 .NET Framework 2.0 版中是新增的。
使用 System.Deployment.Application
命名空间可以将自定义升级行为编程到 ClickOnce 应用程序中。
还可以使用 ApplicationDeployment
根据需要下载大型文件和程序集。必须在部署的应用程序清单中将这些文件标记为“可选”,这样在安装时就不会下载这些文件了。可以通过使用
DownloadFileGroup 或 DownloadFileGroupAsync 方法在应用程序持续时间的任意时刻下载这些文件。可以通过为 AppDomain 类的 AssemblyResolve 事件提供事件处理程序,在程序集加载到内存之前下载这些程序集。有关更多信息,请参见
演练:在设计器中使用
ClickOnce 部署 API 按需下载程序集。
System.DirectoryServices
命名空间
System.DirectoryServices
命名空间用以从托管代码简便地访问 Active Directory。该命名空间包含两个组件类,即 DirectoryEntry 和 DirectorySearcher,它们使用 Active Directory 服务接口 (ADSI) 技术。ADSI 是
Microsoft 提供的一组接口,作为使用各种网络提供程序的灵活的工具。无论网络有多大,ADSI
都可以使管理员能够相对容易地定位和管理网络上的资源。
此命名空间中的类可以与任何 Active Directory
服务提供程序一起使用。当前的一些提供程序包括 Internet 信息服务 (IIS)、轻量目录访问协议 (LDAP)、Novell
NetWare 目录服务 (NDS) 和 WinNT。
ADSI 是 Microsoft Active Directory
的编程接口,使应用程序能够只使用一个接口就可以与网络上的不同目录进行交互。使用
ADSI,可以创建一些应用程序,用以执行常见任务,如备份数据库、访问打印机和管理用户帐户。
System.DirectoryServices.Protocols
命名空间
注意:此命名空间在 .NET Framework 2.0 版中是新增的。
System.DirectoryServices.Protocols
命名空间提供在轻量目录访问协议 (LDAP) 3 版 (V3) 和目录服务标记语言 (DSML) 2.0 版 (V2)
标准中定义的方法。
System.Runtime.Remoting
命名空间
System.Runtime.Remoting
命名空间提供允许开发人员创建和配置分布式应用程序的类和接口。System.Runtime.Remoting
命名空间的一些更重要的类是 RemotingConfiguration 类、RemotingServices
类和 ObjRef 类。
RemotingConfiguration
类包含用于与配置设置衔接的静态方法。RemotingConfiguration.Configure
方法允许开发人员通过使用 XML
格式化配置文件来配置远程处理基础结构。RemotingConfiguration
类还包含若干在客户端和服务器端注册驻留在服务器上的客户端激活对象和服务器端激活对象的方法。
RemotingServices
类提供若干帮助使用和发布远程对象的方法。System.Runtime.Remoting.RemotingServices.Marshal
方法提供在 ObjRef
类的实例中存储激活远程对象并与之通信所需的所有相关信息供以后序列化和传输到远程位置使用的功能。System.Runtime.Remoting.RemotingServices.Unmarshal
方法反转此过程,为远程对象创建可由应用程序使用的代理,不考虑任何远程处理分支。
ObjRef
类保存激活远程对象并与之通信所需的所有相关信息。该类是通过信道传输到远程位置的对象的序列化表示形式,在信道中它被取消封送(请参见
Unmarshal)并可用于创建远程对象的本地代理。
System.Runtime.Serialization.Formatters.Soap
命名空间
System.Runtime.Serialization.Formatters.Soap
命名空间包含 SoapFormatter 类,该类可用于以 SOAP
格式将对象序列化和反序列化。生成使用此命名空间中的类型的应用程序时,必须引用
System.Runtime.Serialization.Formatters.Soap.dll 程序集。
以 SOAP 格式将对象或整个连接对象的图形序列化和反序列化。
System.Security
命名空间
System.Security
命名空间提供公共语言运行库安全系统的基础结构,包括权限的基类。
System.ServiceProcess
命名空间
System.ServiceProcess
命名空间提供用于实现、安装和控制 Windows 服务应用程序的类。服务是长期运行的可执行文件,其运行没有用户界面。实现服务包括从
ServiceBase
类继承,也包括定义在传入开始、停止、暂停和继续命令时所处理的特定行为以及定义在系统关闭时所执行的自定义行为和操作。
服务是使用安装实用工具(例如
InstallUtil.exe)安装的。System.ServiceProcess
命名空间提供安装类,该类将服务信息写入注册表。ServiceProcessInstaller
类提供一个包含类,该类安装安装中所有服务所共有的组件。对于每个服务,您创建 ServiceInstaller 类的实例以安装服务特定的功能。
ServiceController
类使您可以连接到现有的服务并对其进行操作或获取有关它的信息。该类通常用于管理功能,使您可以对服务启动、停止、暂停、继续或执行自定义命令。ServiceBase
类定义当命令发生时服务所执行的处理,而 ServiceController
是使您可以对服务调用这些命令的代理。
System.Web.RegularExpressions
命名空间
System.Web.RegularExpressions
命名空间提供用于分析 ASP.NET
文件的正则表达式。System.Web.RegularExpressions 命名空间的所有成员都是
Regex 类的子代。
-
c# 命名空间命名规范_C#中的命名空间
2020-07-30 21:50:31c# 命名空间命名规范 C#命名空间 (C# Namespace ) In C# namespaces are used to group similar type of classes. Two classes with same name in different namespaces never conflict to each other. 在C#中,...c# 命名空间命名规范
C#命名空间 (C# Namespace )
In C# namespaces are used to group similar type of classes. Two classes with same name in different namespaces never conflict to each other.
在C#中,名称空间用于对相似类型的类进行分组。 在不同名称空间中具有相同名称的两个类永远不会相互冲突。
In C# namespace can be:
在C#中,命名空间可以是:
User defined
用户自定义
Pre defined, that is in-built in .NET class library
预定义,内置在.NET类库中
Here, we need to use using keyword to access defined namespaces.
在这里,我们需要使用using关键字来访问已定义的名称空间。
Syntax:
句法:
namespace <namespace_name> { //Write code here }
Note:
注意:
To declare user defined namespace we need to use namespace keyword.
要声明用户定义的名称空间,我们需要使用namespace关键字。
If we want to access class defined inside namespace then we need use . (dot) Operator.
如果要访问命名空间中定义的类,则需要使用。 (点)运算符。
Example:
例:
using System; using System.Collections; namespace namespace1 { class ABC { public void fun() { Console.WriteLine("Inside Namespace1"); } } } namespace namespace2 { class ABC { public void fun() { Console.WriteLine("Inside Namespace2"); } } } class Program { static void Main() { namespace1.ABC OB1 = new namespace1.ABC(); namespace2.ABC OB2 = new namespace2.ABC(); OB1.fun(); OB2.fun(); } }
Output
输出量
Inside Namespace1 Inside Namespace2
Read more: The 'using' Keyword in C#, Nested Namespace in C#
阅读更多: C#中的“ using”关键字,C#中的嵌套命名空间
翻译自: https://www.includehelp.com/dot-net/namespaces-in-c-sharp.aspx
c# 命名空间命名规范
-
C#命名空间分类
2013-02-08 13:21:46C#命名空间详细分类介绍,方便编程使用,System.Collections //命名空间包含接口和类,这些接口和类定义各种对象(如列表、队列、位数组、哈希表和字典)的集合。 System.Collections.Generic //命名空间包含定义... -
C#命名空间详解namespace
2021-08-30 08:46:24C#命名空间详解namespace 命名空间是一个域,这在个域中所有的类型名字必须是唯一的,不同的类型分组归入到层次化的命名空间, 命名空间的好处是:1、避免名字冲突,2、便于查找类型名字。 如:System.secruity....C#命名空间详解namespace
命名空间是一个域,这在个域中所有的类型名字必须是唯一的,不同的类型分组归入到层次化的命名空间,命名空间的好处是:1、避免名字冲突,2、便于查找类型名字。
如:System.secruity.Cryptogtaphy.
下面介绍namespace 关键字的使用。
namespace test { class class0 { int i; public class0() { } } }
using关键字使用
,访问一个命名空间的内容可以通过完全限定名。如:test.class0来访问。但是每次这样在程序写很麻烦。你可以使用using指令来引用类型。
命名空间的都是引用类型的。所以在程序的开头你可以先引用命名空间。就像你使用VS编译软件时,每个系统生成的Console中都有
using system; using system.drawing; using system.threading ;
之后就可以很方面使用你引用命名空间的类型了。注意using的使用,后面的还要对此做介绍。
全局命名空间
全局命名空间有两部分组成:
1、所有的顶级命名空间;
2、所有没有在任何命名空间中声明的类型;
例如:前面的例子的全局命名空间中声明了test类型(属于第一种情况。)
例如:class outer{}//属于第二种情况;
namespace test1{}是全局命名。
命名空间的规则
名字作用域
所有出现的外部命名空间中的名字都隐式地被引入到内部的命名空间中。在这个例子中middle 和class1被隐式的引入到inner中;
namespace Outer { namespace Middle { class Class1{} namespace inner { class class2:class1{} } } }
在这个例子中:如下:
namespace test{ namespace Common{ class class1{} } namespace Managerreporting{ class class2:Common.class1{} } }
可以看到一个test命名空间中包含两个不交的命名空间。要想引用另外一个,必须使用部分限定名。你可以看出他和上面的例子的区别吗?
名字屏蔽
内部命名空间的名字会屏蔽外部空间相同的名字。
例如;
namespace Outer{ namespace Middle{ class class1{} class class2{} } namespace Inner{ class class1{ class2 cInner; Middle.class2 couter; } class class2{} } }
在这个例子中。在OUter命名空间声明了两个命名空间,在Inner命名空间中,CInner引用的是Inner.class2的类型。COUter引用的是Middle.class2类型。一个大括号表示程序运行结束时,释放里面的临时变量。屏蔽功能仅仅是使用简单的名字引用某个类型有影响。如果想引用Middle命名空间的class2 的类型。你可以乡引用couter一样。用部分限定名或完全限定名。你必须知道屏蔽对于运行时语义并没有什么影响。(因为编译器在解析命名空间规则时,总是将名字转化为完全限定名。编译后生成的IL语言不会包括无限定的或部分限定名。
重复命名空间
可以重复的声明一个命名空间,只要命名空间的类型名字没有冲突;
namespace outer.middle.inner{ class class1{} } namespace outer.middle.inner{ class class2{} }
个人认为可以想下函数的重载。
甚至可以把这个例子分成两个源文件这样就可以将每一个类编译进不同的汇编代码中;
源文件#1
namespace outer.middle.inner{ class class1{} }
源文件#2
namespace outer.middle.inner{ class class2{} }
嵌套指令Using
可以在一个命名空间中嵌套using指令。这样可using指令的作用域限定在命名空间的声明中。
namespace N1{ class class1{} } namespace N2{ using N1; class class2:class1{} }//compile true; namespace N3{ class class3:class1{} }//compile error
注意说明下这样的写,在VS中是无法通过的,还记得前面说的吗?要想引用层次中的类型,必须加上部分或者完全限定名吗?
类型别名和命名空间
引入命名空间可能导致类型名冲突,与其说引入命名空间的全部,不如仅选择要使用的类型引人,给每个要使用的一个别名。
using p=system。reflection
class program{p f;}
但是我们完全没有必要这样做。因为我们可以把它们变成全局的引用。就乡你打开vs时,生成的console一样。
高级命名空间特性
Extern
外部命名空间允许相同的名字出现。只要包含的类型不同就可以。这种情况最容易发生在来自不同的文件中。
库#1:
namespace Widgets{ public class Widget{} }
库#2:
namespace Widgets{
public class Widget{}
}
程序:
using Widgets; namespace test{ static void Main() { Widget w=new Widget(); }//compile errror; }
这个程序不正确的,是因为Widget是不确定的。
解决这个问题就是引用完全限定名。
csc /r:W1=WIdgets1.dll /rW2=Widgets2.dll application.cs
或者使用extern alias W1;extern alias W2;
命名空间别名限定
前面提到,内层命名空间的名字会屏蔽外层命名空间的名字。然而。有时候即使使用完全限定类型也不能解决这个冲突。如下:
namespace N{ class A{ public class B{} static void Main() { new A.B(); } } } namespace A{ class B{} }
这个在运行的是嵌套的B。注意在VS中同一个文件中不可包含同样的命名空间和类型。但在不同文件可能出现。
有两种办法解决可能出现的命名空间冲突问题:
1、使用上面讲的使用别名进行。
2、global命名空间----所有的命名空间的根。
namespace test{ static void Main() { system.Console.WriteLine(new A.B()); System.Console.WriteLine(new global::A.B()); } }
别名限定:
external alias W1; external alias W2; namespace test{ static void Main() { W1.Widgets.Widget w1=new W1.Widgets.Widget(); W2.Widgets.Widget w2=new W2.Widgets.Widget(); } }
namespace 的内容就讲完了,如有什么错误还请指正。
-
Visual C#命名空间详解
2019-08-23 09:15:15Visual C#命名空间详解 ,命名空间提供了一种组织相关类和其他类型的方式。与文件或组件不同,命名空间是一种逻辑组合,而不是物理组合。在C#文件中定义类时,可以把它包括在命名空间定义中。以后,在定义另一个类,... -
C#命名空间.txt
2021-02-03 13:35:52C#命名空间 -
C#命名空间详解
2013-07-16 13:55:23c# 命名空间 -
namespace-C#命名空间
2020-11-05 10:05:22C#程序是利用命名空间组织起来的。命名空间既做程序的内部组织系统,又用做外部组织系统。就像一个国家为了便于管理,分成多个省份一样。 声明命名空间 命名空间是.NET 避免名称冲突的一种方式。例如,定义类Phone来... -
C# 命名空间的引用
2019-07-30 17:19:39命名空间的引用 -
C# 命名空间中不存在类型或命名空间名System.XXX
2020-01-23 12:12:01报错:命名空间中不存在类型或命名空间名“ComponentModel“ 原因:目录名中使用了系统关键字System,导致命名空间混乱 解决方案:把目录名由System改名为Sys。同时,如有需要,把相关的文件的命名空间改为Sys,... -
(C#命名空间)using System
2020-07-13 17:24:38System命名空间包含基本类和基类,这些类定义常用的值和引用类型、事件和事件处理程序、接口、属性和异常处理。其他类提供的服务支持数据类型转换、方法参数操作、数学运算、远程和本地程序调用、应用程序环境管理和... -
详解C#中的命名空间
2022-05-05 21:06:26详解C#中的命名空间命名空间namespaceusing合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建... -
C#命名空间中定义的元素无法显式声明为 private、protected 或 protected internal
2019-05-14 16:10:582、而这里,命名空间中的类型声明只可以具有 public 或 internal 访问修饰符 3、默认是internal 访问级别 4、类中类是可以使用 private 的 总结 四个访问修饰符分别为private、protected、public、internal ... -
C# 命名空间中不存在类型或命名空间名,是否缺少程序集引用
2019-03-27 09:26:49错误 CS0234 命名空间“xxx”中不存在类型或命名空间名“xx”(是否缺少程序集引用?) 错误 CS0246 未能找到类型或命名空间名“xx”(是否缺少 using 指令或程序集引用?) 错误 CS0012 类型“xx”在未引用的程序集中... -
C# 命名空间“System.Data”中不存在类型或命名空间名称“SQLite”。是否缺少程序集引用
2020-09-30 13:42:37引入 System.Data.SQLite.dll(此程序集是客户电脑上面的dll) 后,编译项目,结果就报:命名空间“System.Data”中不存在类型或命名空间名称“SQLite”。是否缺少程序集引用”。 然后尝试各种方法,始终编译不成功... -
c#入门-命名空间
2022-01-18 04:13:49c#命名空间 -
[C#基语法]之C#命名空间(namespace)
2016-09-19 10:02:06我对命名空间的一些想法 说到这个,我相信只要有点C#基础的人都会很清楚的说,这个我知道,这个我理解。这个不就是一个命名空间吗?用Java程序员的话说就是一个包名。 如果您真的认同以上说法那我以不幸的... -
C#命名空间namespace中不能直接包含字段(变量)或方法(函数)之类的成员
2020-12-15 00:01:41C#命名空间即namespace中不能直接包含字段(变量)或方法(函数)之类的成员,须将字段或方法放到类class中,否则编译器会报错。 C#命名空间中不能直接定义字段(变量): 将value字段(变量)挪进类class中不会... -
小组学习:C#命名空间
2009-07-22 15:40:00命名空间命名空间命名空间命名空间 命名空间命名空间命名空间命名空间 -
C# 命名空间、类、函数、变量的关系
2018-02-06 09:52:57其实学C#很久都没有弄明白命名空间、类、函数、变量的关系,现在大致捋一下,如下图: 1)命名空间 namespace 中可包含多个类 class,命名空间将这些类打包起来。一个命名空间想调用另一个命名空间中的类时,就需要... -
C#中的命名空间
2021-10-21 12:11:21C#中的命名空间 -
C#命名空间“Microsoft”中不存在类型或命名空间名称“Office ”---问题解决
2018-05-06 14:35:24老是出现:命名空间“Microsoft”中不存在类型或命名空间名称“Office ”,命名空间“Microsoft office”中不存在类型或命名空间名称“Interop”。解决办法:在项目---》添加引用-----》COM组件下,选择...