如果我想添加其他系统命名空间,为什么需要调用每个命名空间?
例如 如果我想调用System.Text命名空间,我必须使用:
using System;
using System.Text;
答案 0 :(得分:3)
你实际上只需要
using System.Text;
如果您只想使用System.Text
命名空间。
在System
命名空间内,有各种类型,例如System.DateTime
。 System.Text
不在System
中,它是一个单独的命名空间。
混淆是由命名空间的每个“级别”存在类型引起的。这意味着,例如System.DateTime
和System.Text
似乎都在System
中,而实际上前者是System
中的类型,而后者是完全不同的名称空间。
答案 1 :(得分:3)
System命名空间仅指在System下直接找到的文件。它不会自动包含所有System。*命名空间。这是有意的,因为这些是专门的命名空间,在每个类中都不需要。例如,并非每个项目都自动需要System.Web命名空间。
答案 2 :(得分:1)
这是一个可以帮助你一点点的视觉示例。
基本上,您无法从命名空间.System访问命名空间.Text,因为.Teystem命名空间中包含的方法不存在于.System命名空间中。
namespace OuterNamespace
{
public class DoStuff
{
public DoStuff()
{
//This DoStuff is different...
}
}
namespace InnerNamespace
{
public class DoStuff
{
public DoStuff()
{
//than this DoStuff.
}
}
}
}
public class Test
{
public Test()
{
//This "DoStuff" class
OuterNamespace.DoStuff outerStuff = new OuterNamespace.DoStuff();
//Is different than this "DoStuff" class
OuterNamespace.InnerNamespace.DoStuff innerStuff = new OuterNamespace.InnerNamespace.DoStuff();
}
}
答案 3 :(得分:0)
因为它们是不同的名称空间。
答案 4 :(得分:0)
This article解释了如何使用命名空间。特别是关于完全合格名称的例子可能对你很有意思。
答案 5 :(得分:0)
System和System.Text是两个不同的命名空间,这就是你必须引用它们的原因。
System
命名空间包含基本类和基类,用于定义常用的值和引用数据类型,事件和事件处理程序,接口,属性和处理异常
System.Text
名称空间包含字符编码和字符串操作的类型。子命名空间使您可以使用正则表达式处理文本。
现在,如果您对命名风格感到困惑,那么我会坚持使用Microsoft命名约定,因为它清楚地隔离了相关类型并且易于迭代。这比在一个System
命名空间中列出所有CLR类型进行步进式迭代。