using 指令到底有什么作用?

发布于 2024-09-28 12:34:02 字数 65 浏览 6 评论 0原文

在 MSDN 上我可以阅读它的作用,但我想知道它在技术上的作用(告诉编译器在哪里寻找类型..)?我的意思是用作指令。

On MSDN I can read what it does, but I would like to know what it does technically (tells compiler where to look for types..)? I mean using as a directive.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

独行侠 2024-10-05 12:34:02

using 指令的主要功能是使命名空间内的类型无需用户代码限定即可使用。它考虑在引用的程序集和正在编译的项目中定义的命名空间和类型集。

以 MyTypes.Dll 中的以下定义为例,

namespace MyTypes {
  class Class1 {}
}

现在考虑从具有不同命名空间的另一个项目引用 MyTypes.dll。如果没有 using 指令来创建 Class1,我需要限定名称

MyTypes.Class1 local1 = new MyTypes.Class1();

using 指令允许我删除此限定

using MyTypes;
...
Class1 local1 = new Class1();

The primary function of the using directive is to make types within a namespace available without qualification to the user code. It considers the set of namespaces and types which are defined in referenced assemblies and the project being compiled.

Take for example the following definition in MyTypes.Dll

namespace MyTypes {
  class Class1 {}
}

Now consider referencing MyTypes.dll from another project with a different namespace. Without a using directive to create Class1 i need to qualify the name

MyTypes.Class1 local1 = new MyTypes.Class1();

The using directive lets me remove this qualification

using MyTypes;
...
Class1 local1 = new Class1();
ヅ她的身影、若隐若现 2024-10-05 12:34:02

@JaredPar 的答案是正确的,但我想补充一点,它的工作方式与 Java 中的 import 不太一样。 (如果我对 Java 的 import 实际上将其导入到内存中的说法是错误的,请有人纠正我)

您需要包含 DLL 或项目引用,以便能够使用 using 但是,直到您实际调用程序集中的方法/属性/某些内容之前,它不会加载到内存中。因此,您可以使用 using System.Linq; 但如果您实际上没有使用任何 Linq 方法,则永远不会加载 Linq 程序集。 (我不是 100% 肯定 Linq 位于它自己的物理程序集中,因为命名空间和程序集不是 1:1,但为了举例,我假设它是 1:1)

@JaredPar's answer is correct, however I'd like to add that it doesn't quite work the same way as say import in Java. (someone correct me if I'm wrong about Java's import actually importing it into memory)

You need to include either a DLL or project reference in order to even be able to use using however it's not loaded into memory until you actually call into a method/property/something in the assembly. So you could have using System.Linq; but if you don't actually use any Linq methods, the Linq assembly is never loaded. (I'm not 100% positive that Linq is in it's own physical assembly since namespaces and assemblies aren't 1:1, but for sake of example I'm assuming it is)

依 靠 2024-10-05 12:34:02

using 通知编译器在哪些命名空间中搜索文件中使用但未在文件中定义的名称。

using informs the compiler which namespaces to search for names used in the file but not defined in the file.

绅刃 2024-10-05 12:34:02

using 只是告诉编译器转到程序集的配置文件并搜索具有给定名称的特定 DLL,如果找到该 DLL,则将该 DLL 链接到当前项目。 using 只是一个链接操作,使 DLL 在内存中的共享空间中相互通信。
下面这个人说得对

using just tell the compiler to go to the assembly's configuration file and search for a specific DLL with the name given, if the DLL is found then it links that dll into the current project. using is just a link operation to have DLL talk to each other in a shared space in memory.
The guy below here is right

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文