这里的高级问题:
今天我花了很多时间在基础高级概念上进行自我教育,例如API,静态和动态库,DLL和C#中的编组.获得所有这些知识使我看起来像一个非常基本的问题,并且可能在我对这些概念的理解中表现出一个漏洞:
我知道的:
我得不到的:
我的印象是实际的方法是在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(也称为程序集)包含classes(和其他类型)。这些类型通常具有很长的全名,例如System.Collections.Generic.List<T>。这些类型可以包含方法。
在您所在的References区域,您有对程序集的引用(这是.csproj文件的一部分)。在.cs文件中,无需包含任何文件using来引用此DLL,因为您的.csproj文件中已引用了该DLL。
如果包含这样的行using System.Collections.Generic;,则告诉C#编译器System.Collections.Generic.List<T>在键入时寻找List<T>。但是,您不需要那样做:您只需键入即可System.Collections.Generic.List<T>。
DLL包含许多我们可能要在程序中使用的例程/方法
部分正确。.NetDLL包含Classes,而这些类包含Member(字段,常量,方法,属性,事件,运算符,索引器)。
.Net严格来说是OOP,并且不允许代码“浮动”。一切都在类内部定义。
类是在命名空间中组织的,只是为了保持命名的分隔和组织。将名称空间视为包含一个或多个类的“文件夹”,并且可以在一个或多个程序集(DLL)中进行定义。
例如,System名称空间内的类在2个程序集(DLL)中定义:mscorlib.dll和System.dll。
同时,这两个程序集包含许多不同的名称空间,因此您可以将程序集与名称空间的关系视为多对多关系。
当您using在C#代码文件的开头放置指令时,您将告诉编译器“ 无论它们来自什么程序集Namespace,我都想使用在此定义的类”。您将能够在当前项目中引用的所有程序集中使用在此类名称空间中定义的所有类。