在ASP.NET C#应用程序中,我注意到为了使用Regex和StringBuilder,我不得不放两个
using System.Text;
using System.Text.RegularExpressions;
从明白这一点来看,我认为using System.Text
可能包含RegularExpressions
,但两者都是必要的。这两者有什么区别?
答案 0 :(得分:2)
Regex
在System.Text.RegularExpressions
StringBuilder
在System.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
。这些名称空间只是逻辑分隔符,包括父名称空间不会自动包含子项,反之亦然。