7

这是一个愚蠢的问题,但我无法弄清楚问谷歌的术语。

在Java中,如果我想导入所有子类,我会使用类似

java.util.*

并且所有的 util 都将被导入。

首先,我在 C# 中所做的事情的正确术语是什么,以便我可以更有效地开始使用 Google。我在导入命名空间吗?图书馆?子类?(你能说我是新手吗?)

其次,既然我来了,那这在C#中是如何实现的呢?

PS-我确实点击了stackOverflow向我抛出的每个相关问题,看看答案是否会弹出。没运气。我简直无法用语言来描述我在寻找什么。这个例子应该做的很好,但是......任何可以花点时间向我解释术语或者简单地指出我可以(简而言之,我有几本书可以长期使用)的人伟大的。

4

5 回答 5

21

首先,让我们区分程序集引用命名空间

程序集是您在 c# 项目中添加引用的内容,它们是包含您需要的实际类的库,通常以 DLL 文件的形式找到。.net 框架包含许多这样的程序集,Visual Studio 将尝试引用您项目中最常用的程序集(例如,对于 WinForms 项目,它将自动添加对 的引用System.Drawing.dll)。

命名空间是程序集中类的逻辑分区。

一旦你在项目中引用了一个程序集,所有命名空间中的所有类都可以使用,只要你提供它们的全名。

这就是using指令的用武之地。它只是语法糖,不必一直写很长的名字。

例如,假设您的项目引用System.Drawing.dll程序集,则必须使用该程序集的全名来限定该程序集中的类,例如

System.Drawing.Imaging.BitmapData

因为这很烦人并且使代码膨胀,如果你开始你的.cs文件

using System.Drawing.Imaging;

然后,您可以仅使用 name 实例化一个类BitmapData。这仅适用.cs于您添加using指令的文件,而不适用于整个项目。此外,重要的是要注意using一个命名空间不会引入所有嵌套的命名空间,您必须using单独使用每个命名空间。

于 2012-12-27T19:51:44.513 回答
7

你必须更新你的 Google-fu

http://www.harding.edu/fmccown/java_csharp_comparison.html#namespaces

于 2012-12-27T19:51:56.603 回答
4

它可以称为导入/引用/使用命名空间。

这种语言特性在 c# 中不可用。

一点解释:命名空间可以分布在多个库中。因此,当您使用命名空间时,它可能会从多个引用的程序集中引用它。

于 2012-12-27T19:51:42.843 回答
2

它被调用namespace并由关键字导入using。例如:

using System;

此语句使您能够引用该命名空间中存在的所有类。但是,它们不允许您引用已声明的子命名空间中的任何类namespace。您必须分别声明每个namespace。例如:

using System;
using System.Text;

当然,您需要在指定using指令的项目中添加适当的引用。

于 2012-12-27T19:52:18.087 回答
0

在 .Net 中,您首先需要确保存在一个包含您要导入的命名空间的引用程序集。一旦该引用存在,您可以使用“using”指令将该命名空间带入类中,这样就不必完全限定所有对象名称。您可以在 MSDN上找到有关此指令的更多信息。

如果我误解了,请告诉我,我会尽力让您指出正确的方向。

于 2012-12-27T19:51:49.470 回答