在每个程序中,我都必须包含多个名称空间,例如:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
为什么我必须包括:
using System.Collections.Generic;
using System.Linq;
using System.Text;
...因为它们包含在第一个中:
using System;
提前谢谢!
答案 0 :(得分:6)
因为嵌套的命名空间不包含在父命名空间中。有关详细信息,请参阅using directive文档
using 指令不允许您访问嵌套在您指定的命名空间中的任何命名空间。
答案 1 :(得分:2)
System
和System.IO
名称空间不同。
您可以将“subnamespace”视为对象模型中的父子关系。如果您可以访问“Car”对象并不意味着您可以访问汽车的车轮。
System
是一个巨大的命名空间,包含数百个嵌套命名空间和数千个类。您应该分别指定所有嵌套的命名空间,以说明您感兴趣的模块的哪个部分。
答案 2 :(得分:2)
System
和System.Text
是两个不同的命名空间。 System.Text
似乎是System
的一部分是我们作为程序员所加入的语义。在平台视图中没有嵌套命名空间;
但即使不是这样,如果你有
会发生什么namespace MySystem{
namespace Foo{
class Bar {...}
}
class Bar{...}
}
using MySystem;
class MyClass{
private Bar _myBar; //Which one is it MySystem.Foo.Bar or MySystem.Bar?
}
答案 3 :(得分:2)
想象一下这些名称空间与这些类(姓氏是一个类):
A.B.Class1
A.Class2
现在您有以下内容:
using A
- 允许您直接引用Class2但不能引用Class1。
using A.B
- 允许您直接引用Class1但不引用Class2。
如果你想直接在你的代码中引用这两个类,你需要两个使用。
答案 4 :(得分:0)
由于你是初学者,让我澄清一下C#中的namespace
和Java中的package
是不同的东西。无需合并它们。
答案 5 :(得分:0)
并非.net中的所有类都在一个大容器内。这样就增加了类名冲突的可能性,并且它首先看起来不太好。名称空间是容器,它们试图让你的库保持清洁并且更有意义在一个容器下将FTP类和String类放在一起在逻辑上没有任何意义。他们做了两件不同的事情,应该将它们保存在不同的容器中。
命名空间也可以嵌套.Sometime命名空间可以只有另一个命名空间,没有任何class.so来访问你需要的类,然后才能使用它。
在你的情况下,你使用不同的类,这些类在不同的容器上。所以如果你需要它们,你需要使用它们的命名空间限定它们。
答案 6 :(得分:0)
只是一个让你清楚理解的例子。
通过调用父命名空间
无法访问子命名空间Namespace Main //only code and classes are accessible
{
//code for Main Namespace
Namespace subMain //only code and classes are accessible
{
//code for subMain
Namespace verySubMain //only code and classes are accessible
{
//code for verySubMain
}
Namespace otherVerySubMain //only code and classes are accessible
{
//code for otherVerySubMain
}
}
}
答案 7 :(得分:-1)
如果您希望在没有using语句的情况下访问System.Text中的类,则每次希望使用它时都必须使用Text。“类/函数名称”。
这样你就可以调用“类/函数名称”。
不确定你是不是初学者,但这是我能描述的最简单的方法。