繁体   English   中英

C#:使用System.Text和System.Text.RegularExpressions之间的区别

[英]C#: Difference between using System.Text and System.Text.RegularExpressions

在ASP.NET C#应用程序中,我注意到为了使用Regex和StringBuilder,必须将两者

using System.Text;
using System.Text.RegularExpressions;

从坦白的角度来看,我认为using System.Text可能包含RegularExpressions ,但这两者都是必需的。 两者之间有什么区别?

  • RegexSystem.Text.RegularExpressions定义
  • StringBuilderSystem.Text定义

您需要同时包含两个名称空间,这两种类型才能在范围内。 包含名称空间AB不会自动包含所包含的名称空间ABC 如果是这种情况,则嵌套名称空间的使用将受到限制。

它们是具有不同类的不同名称空间。 包括顶级名称空间( System.Text )并不意味着将添加以下名称空间(如RegularExpression)

StringBuilder来自System.Text所以这就是为什么需要using System.Text; Regex来自System.Text.RegularExpressions ,因此您也需要它。

请参阅: 使用C#规范第9.4节中的指令。

using指令的范围扩展到其直接包含编译单元或名称空间主体的名称空间成员声明。 use-directive的范围具体不包括其对等的use-directives。 因此,对等使用指令不会互相影响,并且它们的写入顺序无关紧要。

从MSDN:

System.Text命名空间包含表示ASCII和Unicode字符编码的类。 用于将字符块与字节块之间来回转换的抽象基类; 以及一个帮助程序类,该类可以在不创建String中间实例的情况下操作和格式化String对象。

和:

System.Text.RegularExpressions命名空间包含提供对.NET Framework正则表达式引擎的访问的类。 命名空间提供了可从Microsoft .NET Framework中运行的任何平台或语言中使用的正则表达式功能。 除了此命名空间中包含的类型之外,System.Configuration.RegexStringValidator类还使您能够确定特定字符串是否符合正则表达式模式。

StringBuilder位于System.Text命名空间中,而Regex位于System.Text.RegularExpressions 这些名称空间只是逻辑分隔符,包含父名称空间并不会自动包含子名称,反之亦然。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM