System和System.Text都是名称空间
它们是像嵌套的名称空间一样创建的吗
namespace System{
Some Classes with Methods
namespace Text{
Some Classes with Methods
}
namespace Linq{
Some Classes with Methods
}
}
因为文本嵌套在系统中,所以必须像一样调用它
using System.Text;
----------------或------------------
它们是像一样创建的吗
namespace System{
Some Classes with Methods
}
namespace System.Text{
Some Classes with Methods
}
namespace System.Linq{
Some Classes with Methods
}
所以当你调用它的时候,你就是用它的实际名称空间来调用它
using System.Text;
--------------或------------------
或者可能是因为它写得像
namespace System{
Some Classes with Methods
}
using System;
namespace Text{
Some Classes with Methods
}
using System;
namespace Linq{
Some Classes with Methods
}
因此,因为Text使用的是System,所以您必须将其称为
using System.Text;
-----------------或---------------
可能是其他方面,我不够聪明,没有想到
您的第一个和第二个将表现相同。命名空间有点像文件夹,类有点像文件。您可以将名称空间放在类似文件夹的层次结构中:
namespace System{
namespace Text{
class StringBuilder{
如果你想把它想象成一个DOS命令序列,它可能就像每个namespace
都是mkdir
,每个{
都是其中的cd
,每个}
都是其中中的cd ..
:
mkdir System (Mkdir doesn't crash if a directory exists)
cd System
mkdir Text
cd Text
edit StringBuilder.cs
您可以在一次点击中指定完整路径:
namespace System.Text{
class StringBuilder{
可能类似
mkdir SystemText (Yes, mkdir can accept a full path and will create every directory along the way)
cd SystemText
edit StringBuilder.cs
您的第三个是合法的C#,但与其他两个不同。第三个声明了3个根级别的名称空间,分别称为System、Text和Linq。CCD_ 7语句不像DOS CCD_;将您留在名称空间X"内;它更像是";将名称空间X添加到搜索路径,这样如果你正在寻找类Z,你就有另一个已知的搜索路径";
在DOS术语中,你的第三个例子就像
mkdir System
cd System
cd ..
path add System
mkdir Text
cd Text
cd ..
path add Text
mkdir Linq
cd Linq
cd ..
你不会以这种方式得到文件夹的层次结构,你会在C:\中得到3个文件夹
你可以写
var sb = new StringBuilder();
但它将是Text.StringBuilder
而不是System.Text.StringBuilder
,因为它将位于c:\Text\StringBuilder.cs中——当搜索它时仍然会找到它,因为";路径添加文本";但是将文件夹添加到搜索路径不会导致在其他文件夹内创建文件夹
文件/文件夹的类比最终失败了,因为C#可以在一个名为"与任何事情无关"的文件中的任何数量的名称空间中有任何数量的类-见鬼,它可能是Cdrive.cs,包含数百个类和名称空间,但为此目的,它可以。