识别在Java和C#中编译但运行方式不同的代码

pet*_*ust 4 c# java

我不得不通过复制和粘贴然后编辑编译器错误将代码从Java移植到C#(很快就会反过来).(请接受这是必要的;如果需要我可以解释).是否存在两种语言中相同代码片段运行方式不同的情况?我将包括在一个语言中定义顺序或操作或运算符优先级但在另一个语言中未定义的情况,但排除两者中未定义的情况.

我特别感兴趣的是可以识别这些片段的任何开发工具.

@Thomas.谢谢.J#不是一个选项 - 代码被强制要在C#中.你的评论中"this"是指什么?

Jon*_*eet 7

一个例子 - Java 在超类构造函数之后运行变量初始值设定项.C#之前运行它们.如果超类构造函数然后调用在相关类中重写的虚方法,则会影响事物.(这通常是一个坏主意,但它会发生.)

当然还有泛型,它们非常非常不同.例如:

public class Foo<T>
{
    static int counter;
}
Run Code Online (Sandbox Code Playgroud)

在Java中有一个 counter变量.在C#中,每个构造类型都有一个,因此Foo<string>.counter并且Foo<int>.counter是独立的.

我担心我不知道有任何工具来识别这种事情.

我已经做了一定量的Java移植到C#我自己,我想尽量让生成的代码,因为它是重要的惯用 "夏氏",你可以.例如,将getter和setter转换为属性,有时将索引器转换为索引器.IDisposable在适当的地方实施......这样的事情.