在 C# 中是否可以像 Java 一样导入所有子类?

7
这是一个很蠢的问题,但我无法想出用语来询问谷歌。
在Java中,如果我想要导入所有子类,我会使用类似以下的代码:
java.util.*

所有的“util”都将被导入。

首先,在C#中,我正在做什么的专业术语是什么,这样我就可以更有效地使用谷歌了。 我是在导入命名空间?库?子类?(你能告诉我我是新手吗?)

其次,在这里,如何在C#中实现此目的?

PS- 我确实点击了StackOverflow提供的每一个相关问题,以查看答案是否出现。 没有运气。我只是无法用语言来描述我要找的东西。 示例应该做得很好,但...任何人都可以花点时间向我解释这个术语,或者可能只是指向一个可以(简而言之,我有一些长期任务的书籍),那就太好了。


2
你正在导入命名空间。在C#中没有这样的结构。 - D Stanley
5个回答

21

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

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

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

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

这就是using指令的作用。它只是不必一直写很长的名称而已。

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

System.Drawing.Imaging.BitmapData

如果你在你的.cs文件中加入以下内容,这会变得非常乏味并且会增加代码的体积:

因为这会让代码累赘不堪,所以如果你在.cs文件中开始时写上以下内容:

using System.Drawing.Imaging;

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


谢谢。非常直接和深思熟虑的回答。此外,现在我知道为什么在我的代码中使用 using 之前必须先在 #Develop 中使用引用了。再次感谢! - Jay Carr

7

你是我的英雄。非常感谢你! - Jay Carr
1
不需要那么多,我只要十万 :) - Peter Cetinski
如果我能接受两个答案,我会点击那边的复选框。你确实很好地回答了我的PS。再次感谢 :-). - Jay Carr

4

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

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

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


啊,好的。那么我需要根据需要导入它们。这样做至少应该有助于更好的编码实践,尽管有时我喜欢作弊...只是想确认一下,如果我像这样做codeusing ExcelApicode,那就不包括codeusing ExcelApi.Utilscode,对吗?我必须同时导入两个才能获得两个级别的命名空间? - Jay Carr
没错,简单来说,using System和using System.Web是不同的。 - humblelistener

2

这被称为命名空间,可以通过关键字using导入。例如:

using System;

这个语句使你能够引用该命名空间下所有存在的类。然而,它们并不能让你引用已声明 namespace 的子命名空间中的任何类。你必须单独声明每个 namespace。例如:

using System;
using System.Text;

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


0
在 .Net 中,你首先需要确保有一个包含你想要导入的命名空间的引用程序集。一旦该引用存在,你就可以使用 'using' 指令将该命名空间引入到类中,以避免必须完全限定所有对象名称。你可以在 MSDN 获取更多关于此指令的信息
如果我理解有误,请让我知道,我会尽力为您指明正确的方向。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接