C# 中 DLL 和命名空间的关系

2024-05-17

这里有一个高级问题:

今天我花了很多时间自学基本的高级概念,例如 API、静态和动态库、DLL 以及 C# 中的编组。获得所有这些知识让我想到了一个看起来非常基本的问题,并且可能表明我对这些概念的理解存在漏洞:

我知道的:

  • DLL 可能包含类,这些类又包含各种类成员,例如方法和字段,我可能想在程序中使用其中的一些成员
  • 在 C# 中,我们在代码顶部使用关键字“using”来定义我们的命名空间 想要加入我们的计划

我没有得到什么:

我的印象是实际的方法是在 DLL 中定义的。当我给它们的只是命名空间时,我的程序如何找到 DLL 中定义的实际函数?对我来说,将“using XYZ.dll”放在顶部似乎比“using XYZ_namespace”更直观。

非常感谢您帮助我填补这里的空白。

编辑:修改帖子以特定于 C#。

编辑 2:对于其他想知道他们的 C# 应用程序如何实际获取通过“using namespaceX”提供的类型的人来说,这是一个很好的资源(除了下面有用的帖子之外):http://broadcast.oreilly.com/2010/07/understanding-c-namespaces-and.html http://broadcast.oreilly.com/2010/07/understanding-c-namespaces-and.html.

基本上,您想要使用的类型驻留在库中,并且您必须将 Visual Studio 设置为引用这些库,以便可以在代码中“使用”其名称空间。


DLL 包含许多我们可能想要在我们的应用程序中使用的例程/方法 程式

部分正确。.NetDLL 包含Classes http://msdn.microsoft.com/en-us/library/vstudio/x9afc042.aspx,这些类包含Members http://msdn.microsoft.com/en-us/library/vstudio/ms173113.aspx(字段、常量、方法、属性、事件、运算符、索引器)。

.Net 是严格的 OOP,它不允许代码“漂浮在地狱边缘”。一切都在类内部定义。

课程安排在命名空间 http://msdn.microsoft.com/en-us/library/z2kcy19k%28v=vs.90%29.aspx只是为了保持命名分离和组织。将命名空间视为包含一个或多个类的“文件夹”,并且可能在一个或多个程序集 (DLL) 中定义。

例如,里面的类System命名空间在 2 个程序集 (DLL) 中定义:mscorlib.dll and System.dll.

同时,这两个程序集包含许多不同的命名空间,因此您可以将程序集与命名空间的关系视为多对多。

当你放一个using指令位于 C# 代码文件的开头,您告诉编译器“我想使用在此定义的类 Namespace, 无论他们来自哪个议会”。您将能够在所有程序集中使用此类命名空间中定义的所有类参考 http://msdn.microsoft.com/en-us/library/wkze6zky%28v=vs.90%29.aspx从当前项目中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中 DLL 和命名空间的关系 的相关文章

  • 在哪里可以找到列出 SSE 内在函数操作的官方参考资料?

    是否有官方参考列出了 GCC 的 SSE 内部函数的操作 即 头文件中的函数 除了 Intel 的 vol 2 PDF 手册外 还有一个在线内在指南 https www intel com content www us en docs in
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 将控制台重定向到 .NET 程序中的字符串

    如何重定向写入控制台的任何内容以写入字符串 对于您自己的流程 Console SetOut http msdn microsoft com en us library system console setout aspx并将其重定向到构建在
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • C# 模拟VolumeMute按下

    我得到以下代码来模拟音量静音按键 DllImport coredll dll SetLastError true static extern void keybd event byte bVk byte bScan int dwFlags
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • @RestController 没有 @ResponseBody 方法工作不正确

    我有以下控制器 RestController RequestMapping value base url public class MyController RequestMapping value child url method Req
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • 如何在 Android 上创建 YouTube 的双击手势?

    我在 Android 上有 exoplayer 的应用程序 我已经创建了 youtube双击手势用动画向前或向后跳跃 10 秒 如何在双击时创建具有波纹效果的半圆 像这样 这个怎么做 我也想实现这样的功能 所以我自己编写了它来 复制 You
  • 调用 exit() 时是否运行析构函数? [复制]

    这个问题在这里已经有答案了 可能的重复 exit 或异常会阻止调用作用域结束析构函数吗 https stackoverflow com questions 2668075 will exit or an exception prevent
  • 负整数的基数排序

    我正在尝试对整数 包括负整数 实现基数排序 对于非负整数 我计划为数字0 9创建一个10个队列的队列 并实现LSD算法 但我对负整数有点困惑 我现在的想法是继续为它们创建另一个包含 10 个队列的队列 并分别对它们进行排序 然后在最后 我将
  • 嵌套字典中的 Django 模板

    我正在使用 Django 模板 并且遇到了嵌套字典的一个问题 Dict result dict type 0 file name abc count 0 type 1 file name xyz count 50 我的 HTML 文件中的模
  • 如何将 mysql 转换为 mysqli? [复制]

    这个问题在这里已经有答案了 我厌倦了将 mysql 转换为 mysqli 但似乎收到了很多错误和警告 连接到数据库没有问题 但其余代码似乎错误 我做错了什么 sql
  • 对成员“buildBlock()”的引用不明确

    我一直在尝试使用 Swift UI 为 iOS 13 制作一个应用程序 但我不断收到这个奇怪的错误 对成员 buildBlock 的引用不明确 无论我做什么 错误都不会消失 我尝试一次对代码段进行注释 以查看哪一部分可能导致了问题 但唯一有
  • Android-工具栏中的SearchView

    我只想在我的应用程序中添加 searchview 但我不想搜索任何东西 只是我想要用户输入的查询 到目前为止 我尝试了这段代码 但是当我运行我的应用程序时它崩溃了 Update 我尝试了这个 但即使我的应用程序崩溃了 main menu x
  • c# 通过内存地址调用方法

    我正在尝试在 C 中的指定内存地址调用函数 以下是我在 C 中的操作方法 typedef void do int i auto doActor do 0xAAAABEEF doActor 1 如果可能的话 如何在 C 中复制这种行为 对 C
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 如何在没有 Startup 类的情况下以编程方式启动 .NET 6 最小 API

    我正在尝试对我们的提供商项目实施 PactNet 合同测试 然而问题是 我们使用的是 Minimal API 因此我们没有将 Startup cs 和 Program cs 类全部整合到一个 Program cs 中 这提出了一个问题 因为
  • 如何将 X11 窗口 ID 转换为进程 ID

    我正在开发一个小型应用程序 需要在给定主窗口或子窗口的 X11 窗口 ID 的情况下找到进程的 PID 我看到了使用进行此类转换的示例 NET WM PID 但我不知道如何在不使用它的情况下做到这一点 不使用的原因 NET WM PID是它
  • 无法启动 Windows 服务,错误 1064

    我编写了一个在 Win10 上运行的 Windows 服务 它运行得非常好 直到我决定对其进行一些更改 我重写了一些逻辑 在调试和发布配置中进行了测试 一切都很好 然后 我使用卸载了当前版本的服务installutil exe u serv
  • 如何将 Integer8 值转换为 DateTime?

    如何将 Integer8 类型值转换为 DateTime 类型值 特别是 我正在尝试获得帐户过期采用人类可读形式的 Active Directory 用户属性 SearchResult GetDirectoryEntry Propertie
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • Java:无法从同一包中的不同类访问静态变量

    这很奇怪 因为我有一个可以访问 Frame dimension getWidth 的 Character 类 及其伙伴 getHeight 但是当我想在 Map 类中使用它时 Eclipse 强调了它并且无法给我反馈 运行该程序最终会出现
  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 用于检查 Apache Camel XML 中字符串的 JSONPath 表达式

    假设我有一个简单的 json 文件 如下所示 log host blah severity INFO system 1 我正在使用 Apache Camel 它是 Spring XML 来处理和路由 json 文件 我的路由代码看起来像这样
  • C# 中 DLL 和命名空间的关系

    这里有一个高级问题 今天我花了很多时间自学基本的高级概念 例如 API 静态和动态库 DLL 以及 C 中的编组 获得所有这些知识让我想到了一个看起来非常基本的问题 并且可能表明我对这些概念的理解存在漏洞 我知道的 DLL 可能包含类 这些