3

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

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

using System;
using System.Text;
  • 为什么我不能只使用系统?
  • 为什么我还必须使用 System.Text 调用?
  • 为什么我不能只使用 System 来使用所有 System 命名空间?
  • 为什么我们将System用于所有命名空间?system的含义 是什么?
4

6 回答 6

3

你实际上只需要

using System.Text;

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

System命名空间内,有多种类型,例如System.DateTime. System.Text虽然不在,System但它是一个单独的命名空间。

混淆是由于命名空间的每个“级别”都有类型。这意味着 egSystem.DateTimeSystem.Text两者似乎都在 in System,而实际上前者是 in 类型,System而后者是完全不同的命名空间。

于 2013-10-25T12:15:46.820 回答
3

System 命名空间仅指直接在 System 下找到的文件。它不会自动包含所有 System.* 命名空间。这是有意的,因为这些是不是每个类都需要的专用命名空间。例如,并非每个项目都自动需要 System.Web 命名空间。

于 2013-10-25T12:16:25.543 回答
1

这是一个视觉示例,可能会对您有所帮助。

基本上,您无法从命名空间 .System 访问命名空间 .Text,因为 .Text 命名空间中包含的方法在 .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();
    }
}
于 2013-10-25T12:29:28.640 回答
0

System 和 System.Text 是两个不同的命名空间,这就是为什么你必须同时引用它们。

System命名空间包含定义常用值和引用数据类型、事件和事件处理程序、接口、属性和处理异常的基本类和基类

命名空间包含字符编码和字符串操作的System.Text类型。子命名空间使您能够使用正则表达式处理文本。

现在,如果您对命名风格感到困惑,那么我会坚持使用 Microsoft 命名约定,因为它清楚地隔离了相关类型并且易于迭代。这使得类型迭代比在一个System命名空间中列出所有 CLR 类型更容易。

更多关于命名空间

于 2013-10-25T12:30:57.380 回答
0

本文介绍了如何使用命名空间。特别是关于完全限定名称的示例可能会让您感兴趣。

于 2013-10-25T12:17:37.947 回答
0

因为它们是不同的命名空间。

于 2013-10-25T12:14:11.117 回答