C# 从VB.NET或C访问相同的API#

C# 从VB.NET或C访问相同的API#,c#,vb.net,C#,Vb.net,关于使用API编程与另一个应用程序接口的应用程序,我可以使用VB和C访问库(API)吗?因为两个代码都有效地编译为相同的CIL或IL(我在这里称之为“有限理解”) 编辑:应用程序已经使用C语言构建,规范是使用应用程序的API为自定义功能编写C语言。我真的不知道它是什么类型的API。一般来说,是的。VisualBasic早在C#出现之前就有了互操作支持,因此您往往会找到使用Declare关键字的声明。这并不能完全替代pinvoke声明。但这不是问题,它支持属性的能力与C#一样好。它们都使用CLR中

关于使用API编程与另一个应用程序接口的应用程序,我可以使用VB和C访问库(API)吗?因为两个代码都有效地编译为相同的CIL或IL(我在这里称之为“有限理解”)


编辑:应用程序已经使用C语言构建,规范是使用应用程序的API为自定义功能编写C语言。我真的不知道它是什么类型的API。

一般来说,是的。VisualBasic早在C#出现之前就有了互操作支持,因此您往往会找到使用Declare关键字的声明。这并不能完全替代pinvoke声明。但这不是问题,它支持
属性的能力与C#一样好。它们都使用CLR中内置的完全相同的pinvoke marshaller,并公开其所有功能

一个很小的例子是api声明,在这里您需要使用指针,而VB.NET不直接支持指针。从技术上讲,您可以在C#中声明类型化指针,但无论如何,您几乎总是将它们展平为IntPtr。在VB.NET中与在C#中一样可用


一定要尽早学习一门语言,因为你不想花时间学习两次。请记住,为了隐藏用C#编写的api复杂性而编写的包装器类也可以从VB.NET中使用。因此,如果你做得对,它就完全不重要了。

是的,但库的接口应该是“符合CLS”的。请澄清它是哪种API—托管的、本机的、COM的、一些远程web服务/REST。。。。一般来说是的,但在某些情况下(即在VB.Net中处理
IDispatch
COM对象比较容易),可能会有更紧凑的语法。