【问题标题】:Import all subclasses like Java but in C#导入所有子类,如 Java,但在 C# 中
【发布时间】:2012-12-27 19:47:21
【问题描述】:

这是一个愚蠢的问题,但我不知道用什么术语来问 Google。

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

java.util.*

所有的 util 都会被导入。

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

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

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

【问题讨论】:

  • 您正在导入命名空间。 C#中没有这样的构造

标签: c#


【解决方案1】:

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

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

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

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

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

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

System.Drawing.Imaging.BitmapData

因为这很烦人并且会使代码膨胀,如果您以 .cs 文件开头

using System.Drawing.Imaging;

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

【讨论】:

  • 谢谢。一个非常直接和深思熟虑的答复。另外,现在我知道为什么在我的代码中使用using 之前必须在#Develop 中使用引用thingy。再次感谢!
【解决方案2】:

它被称为namespace,由关键字using 导入。例如:

using System;

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

using System;
using System.Text;

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

【讨论】:

    【解决方案3】:

    【讨论】:

    • 你是我的英雄。谢谢你一百万!
    • 不用了,我要10万:)
    • 哈哈。如果我能接受两个答案,我会点击那里的复选框。你当然很好地解决了我的 PS。再次感谢:-)。
    【解决方案4】:

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

    这样的语言功能在 c# 中不可用。

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

    【讨论】:

    • 啊,好吧。所以我会根据需要导入它们。好吧,它至少应该有助于更好的编码实践,尽管我有时喜欢作弊......只是为了检查我是否做了类似codeusing ExcelApicode 不包括codeusing ExcelApi.Utils@987654324 @ 举个例子?我必须进行两次导入才能获得两个级别的命名空间?
    • 没错..说得简单..使用System和使用System.Web是不同的。
    【解决方案5】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 1970-01-01
      • 2011-03-22
      • 2011-07-28
      • 2019-07-19
      相关资源
      最近更新 更多