C# · 12月 22, 2021

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

这里的高级问题:

今天我花了很多时间在基础高级概念上进行自我教育,例如API,静态和动态库,DLL和C#中的编组.获得所有这些知识使我看起来像一个非常基本的问题,并且可能在我对这些概念的理解中表现出一个漏洞:

我知道的:

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

我得不到的:

我的印象是实际的方法是在DLL中定义的.当我给出的所有函数都是命名空间时,我的程序如何找到DLL中定义的实际函数?在顶部“使用XYZ.dll”而不是“使用XYZ_namespace”对我来说似乎更直观.

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

编辑:修改后的帖子特定于C#.

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

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

解决方法 在C#中,DLL(也称为程序集)包含类(和其他类型).这些类型通常具有长全名,例如System.Collections.Generic.List< T>.这些类型可以包含方法.

在“引用”区域中,您有对程序集的引用(这是.csproj文件的一部分).在.cs文件中,您不需要包含任何用于引用此DLL的用法,因为它已在.csproj文件中引用.

如果包含类似于使用System.Collections.Generic;的行,则告诉C#编译器查找System.Collections.Generic.List< T>当您键入List< T>时.但是,您不需要这样做:只需键入System.Collections.Generic.List< T>.