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

时间:2015-02-04 18:11:38

标签: c# asp.net

在ASP.NET C#应用程序中,我注意到为了使用Regex和StringBuilder,我不得不放两个

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

从明白这一点来看,我认为using System.Text可能包含RegularExpressions,但两者都是必要的。这两者有什么区别?

3 个答案:

答案 0 :(得分:2)

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

您需要将这两种类型的两个命名空间都包含在范围内。包含名称空间A.B并不会自动包含包含的名称空间A.B.C。如果是这种情况,嵌套命名空间的用途有限。

答案 1 :(得分:2)

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

StringBuilder来自System.Text,因此您需要using System.Text;Regex来自System.Text.RegularExpressions,这也是您需要的原因。

请参阅:using directive from C# Specifications section 9.4.

  

using-directive的范围扩展到了   其立即包含的namespace-member-declarations   编译单元或命名空间体。 using指令的范围   具体而言,不包括其对等使用指令。因此,同行   using-directives不会相互影响,也不会影响它们的顺序   写的是微不足道的。

答案 2 :(得分:1)

来自MSDN:

  

System.Text命名空间包含表示ASCII和的类   Unicode字符编码;用于转换的抽象基类   字符块之间的字符块;和助手班   在不创建的情况下操纵和格式化String对象   String的中间实例。

  

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

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