CLR和JVM之间有很大的不同。
一些例子:
- Java没有用户定义的值类型
- Java泛型与.NET泛型 完全 不同
- C#的许多方面都依赖于框架的元素-委托等。您还需要移植库,即使在 语言 方面也是如此。
- Java不支持JVM级别的属性和事件之类的东西。您可以伪造其中的一些,但事实并非如此。
- 我不认为Java即使在JVM级别也没有等效于按引用传递参数的方法
- 尽管我不确定C#规范中包含多少内容,但是与不同的内存模型有关的微妙之处可能会咬人。
- 通常,Java中不可能出现不安全的代码
- JNI和P / Invoke之间与本机代码的互操作性非常不同。对您来说,这可能不是什么大问题。
- 您必须伪造运算符重载和用户定义的转换
您可能会移植 很多 C#,但是IMO会让您感到非常不满意。
换一种方式,您知道IKVM吗?它允许您在.NET中运行Java代码。



