一般编程 - 跨语言兼容的课程

时间:2016-06-20 05:40:13

标签: java c#

我们可以创建一个C#类,可以在Java等其他高级语言中使用吗?

更具体地说,我在c#中定义了一个函数。现在我可以在Java等其他语言中使用相同的函数而无需重新编写它,并在c#中使用引用或其他任何内容吗?

这里的问题并不严格限于任何特定语言?这里的问题是我们可以用一种语言创建一个可以用于其他语言的类。

4 个答案:

答案 0 :(得分:0)

是的,你可以使用这样的结构。 Web服务与语言无关,或者您可以使用cmd命令调用(可执行程序)。

答案 1 :(得分:0)

  

我们可以用C#创建一个可以在其他高级别使用的类   像Java这样的语言。?

<强> NOPE。

答案 2 :(得分:0)

OP:

  

我们可以创建一个C#类,可以在Java等其他高级语言中使用吗?

     

我在c#中定义了一个函数。现在我可以在Java等其他语言中使用相同的功能而无需重新编写它

是的,可以做到。

您可以使用工具jni4net生成用于调用c#的Java代理类。

  

Java和.NET之间的桥梁(进程内,快速,面向对象,开源)

这是他们对该工具的看法:

  

使用反射,我们为.NET和Java的核心类获取公共方法签名,并为另一方生成代理类。

     

我们有.NET版本的JNI API。

     

我们使用JNI将调用从.NET代理转发到真实Java对象上的方法。 (说明)

     

我们使用JNI注册Java代理的本机方法的.NET实现,以转发对真实.NET对象上的方法的调用More...

可以使用来源和二进制文件here

但等等还有更多!

虽然不是必需的,但您可以使用jni4net从.NET调用Java。

另见

答案 3 :(得分:0)

一般来说:

正如一些答案所述:对于许多语言,有一种调用编译的编译器输出的方法/功能的方法,但IMO我能想到的唯一有用的方法是当它涉及到遗留软件或不依赖于语言的API(例如,不使用休息)。示例可能是为了向下兼容而从Java程序调用遗留C# - class的方法,或者因为它只适用于.NET。但是你必须意识到没有一般方法可以用于任何语言组合和IMO这不是使用一个class /方法,它只是调用它。 / p>

当谈到绿地项目时,我会避免使用(对很多)不同的语言(多语言编程)。可维护性受到的影响很大,因为开发人员需要知道所有使用的语言,使用不同的IDE等。此外,调试变得很麻烦。

对系统的不同部分使用相同的语言具有很大的优势,可以使用某些独立开发/测试的共享库类。

但是:如果由于某种原因你被迫使用不同的语言,我建议尝试为每种语言重新创建两次所需的共享功能(我知道这很糟糕)并通过(de-)序列化它们来传递对象。这样,您的项目仍然可以测试和调试。