在 c# 中,如果我想添加其他系统命名空间,为什么我需要调用每个命名空间?
例如,如果我想调用 System.Text 命名空间,我必须使用:
using System;
using System.Text;
- 为什么我不能只使用系统?
- 为什么我还必须使用 System.Text 调用?
- 为什么我不能只使用 System 来使用所有 System 命名空间?
- 为什么我们将System用于所有命名空间?system的含义 是什么?
在 c# 中,如果我想添加其他系统命名空间,为什么我需要调用每个命名空间?
例如,如果我想调用 System.Text 命名空间,我必须使用:
using System;
using System.Text;
你实际上只需要
using System.Text;
如果您只想使用System.Text
命名空间。
在System
命名空间内,有多种类型,例如System.DateTime
. System.Text
虽然不在,System
但它是一个单独的命名空间。
混淆是由于命名空间的每个“级别”都有类型。这意味着 egSystem.DateTime
和System.Text
两者似乎都在 in System
,而实际上前者是 in 类型,System
而后者是完全不同的命名空间。
System 命名空间仅指直接在 System 下找到的文件。它不会自动包含所有 System.* 命名空间。这是有意的,因为这些是不是每个类都需要的专用命名空间。例如,并非每个项目都自动需要 System.Web 命名空间。
这是一个视觉示例,可能会对您有所帮助。
基本上,您无法从命名空间 .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();
}
}
System 和 System.Text 是两个不同的命名空间,这就是为什么你必须同时引用它们。
System
命名空间包含定义常用值和引用数据类型、事件和事件处理程序、接口、属性和处理异常的基本类和基类
命名空间包含字符编码和字符串操作的System.Text
类型。子命名空间使您能够使用正则表达式处理文本。
现在,如果您对命名风格感到困惑,那么我会坚持使用 Microsoft 命名约定,因为它清楚地隔离了相关类型并且易于迭代。这使得类型迭代比在一个System
命名空间中列出所有 CLR 类型更容易。
本文介绍了如何使用命名空间。特别是关于完全限定名称的示例可能会让您感兴趣。
因为它们是不同的命名空间。