如果我想添加其他系统命名空间,为什么我需要调用每个命名空间?

时间:2013-10-25 12:13:00

标签: c# namespaces

如果我想添加其他系统命名空间,为什么需要调用每个命名空间?

例如 如果我想调用System.Text命名空间,我必须使用:

using System;
using System.Text;
  • 为什么我只能使用System?
  • 为什么我还要使用System.Text调用?
  • 为什么我只能使用System?
  • 来使用所有系统命名空间
  • 为什么我们对所有命名空间使用系统?系统的含义 是什么?

6 个答案:

答案 0 :(得分:3)

你实际上只需要

using System.Text;

如果您只想使用System.Text命名空间。

System命名空间内,有各种类型,例如System.DateTimeSystem.Text不在System中,它是一个单独的命名空间。

混淆是由命名空间的每个“级别”存在类型引起的。这意味着,例如System.DateTimeSystem.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类型进行步进式迭代。

More about namespaces