将C#代码转换为VBNET

时间:2013-11-16 13:22:12

标签: c# .net vb.net naudio code-translation

我需要将此C#库中的NReplayGain代码https://github.com/karamanolev/NReplayGain转换为有效的VBNET代码。

TrackGain trackGain = new TrackGain(44100, 16);
foreach (sampleSet in track) {
    trackGain.AnalyzeSamples(leftSamples, rightSamples)
}
double gain = trackGain.GetGain();
double peak = trackGain.GetPeak();

我翻译过:

Dim trackGain As New TrackGain(samplerate, samplesize)

Dim gain As Double = trackGain.GetGain()
Dim peak As Double = trackGain.GetPeak()

3 个答案:

答案 0 :(得分:3)

使用在线转换器。 C#到VB转换器:

上面显示的c#代码有错误。可能它是用伪代码编写的。我没有在你提到的github地址中找到任何样本集的声明。

缺少分号(在循环内)。未声明循环变量sampleSetleftSamplesrightSamples来自哪里?循环变量不在循环内使用。左侧和右侧样本可能是sampleSet的一部分。如果我纠正了这个问题,我可以使用其中一个在线转换器来转换代码。

C#:

TrackGain trackGain = new TrackGain(44100, 16);
foreach (SampleSet sampleSet in track) {
    trackGain.AnalyzeSamples(sampleSet.leftSamples, sampleSet.rightSamples);
}
double gain = trackGain.GetGain();
double peak = trackGain.GetPeak();

VB:

Dim trackGain As New TrackGain(44100, 16)
For Each sampleSet As SampleSet In track
    trackGain.AnalyzeSamples(sampleSet.leftSamples, sampleSet.rightSamples)
Next
Dim gain As Double = trackGain.GetGain()
Dim peak As Double = trackGain.GetPeak()

毕竟,这两个版本看起来并没有那么不同!

答案 1 :(得分:2)

在用不同语言编写的程序集中引用相当简单。 我经常从F#引用C#代码并引用C#中的VB.NET代码。 只需确保编译两个项目以针对相同的框架版本,例如.NET 4.5或Mono 2.10,以及CPU架构。

如果您需要文件驻留在相同的程序集中。我建议你学习C#语法并手动转换它。

编辑:浏览存储库后,我只看到一些类。 除了学习新语言之外,还可以提高您编写代码和使用您熟悉的语言阅读代码的能力。

答案 2 :(得分:1)

一个不错的在线解决方案,可以将.NET转换为C#,反之亦然,也可以转换为另一种语言,因为JavaScript是CodeTranslator - Carlossag。到目前为止,我对这个翻译器没有任何疑问。