当前位置: 首页 > 编程语言 > C#

C#汇编,什么是汇编?分享

时间:2023-04-10 11:43:38 C#

C#汇编,什么是汇编?我试图了解C#中的内部访问修饰符。我似乎无法理解程序集是什么,以及我的程序的哪一部分保留在该程序集中。我试图使它的变量只能由以下命名空间中的对象访问:命名空间Engine.Entity有问题的变量是在该命名空间内的类中定义的,所以我假设如果我将它设为内部,则只有内部的对象命名空间可以访问它。我看到程序集和命名空间是一体的,我认为这是真的。命名空间只影响名称解析。命名空间并不意味着任何类型的存储,命名空间也不决定哪些DLL包含您的代码。命名空间允许您将相关事物组合在一个逻辑名称下,即使它们实际上可能驻留在不同的DLL中。程序集基本上只是一个DLL或EXE文件。它包含IL代码和描述该DLL或EXE中代码的类型信息。它也可以包含许多其他内容,但对于初学者来说,只需将其视为一个DLL。通过将代码编译到生成DLL或EXE的项目(csproj)中,您可以将代码放入特定的程序集中。命名空间可以跨越多个程序集。也就是说,作为此逻辑命名空间成员的类可以驻留在多个DLL中。仅当项目引用包含该类的正确程序集(DLL)时,才能访问源代码中的特定类。“内部”修饰符意味着只能在同一程序集中访问该符号。只有编译到与代码相同的DLL中的代码才能访问标记为内部的属性或方法。命名空间/程序集很容易混淆,因为它分离了代码的物理位置(程序集)和引用方式(逻辑上使用命名空间和物理上引用程序集)。我通常使用贡献这个词来解释这一点:一个程序集可以贡献给多个命名空间。例如,System.Data.dll程序集有助于命名空间,例如System.Data(例如类System.Data.DataTable)和Microsoft.SqlServer.Server(例如类Microsoft.SqlServer.Server.SqlContext)。多个程序集可以构成一个命名空间。例如,System.Data.dll程序集和System.Xml.dll程序集都属于System.Xml命名空间。这意味着如果您在项目中使用System.Xml.XmlDataDocument类,则需要引用System.Data.dll程序集。如果您使用System.Xml.XmlDocument类,则需要从您的项目中引用System.Xml.dll。(以上示例适用于.NET4.0,但也适用于以前的.NET版本)。DannyThorpe对namespace和internal的概念解释得很好,所以我就不再赘述了。--jeroen来自内部(C#参考)internal关键字是类型和类型成员的访问修饰符。只能在同一程序集中的文件中访问内部类型或成员,因此这意味着来自同一程序集/dll,而不是命名空间。基本上,您不能只使变量在给定名称空间内可见。任何人都可以定义任何命名空间,这样就打消了internal的想法:你只需要这样写namespaceSystem{publicstaticMySystemInternalSpy{publicstaticvoidSpyInternals(){...}}}比如你可以在System中访问命名空间定义为内部的任何变量、类或方法。命名空间和程序集不是同义词。命名空间通常跨越多个程序集。从VisualStudio构建的任何托管代码都具有DLL/EXE二进制文件的一对一项目到程序集对应关系。但是,如果将托管代码与命令行链接,则可以创建一个程序集,其中多个项目文件都属于一个程序集(这意味着磁盘上的多个文件一起代表一个程序集)。不过这种情况就更不用说了,这在实践中是绝不会发生的玄妙之事。“内部”访问修饰符仅表示只能从该程序集中访问目标。它与名称空间无关。以上就是C#学习教程:C#汇编,什么是汇编?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: