我需要将此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()
答案 0 :(得分:3)
使用在线转换器。 C#到VB转换器:
上面显示的c#代码有错误。可能它是用伪代码编写的。我没有在你提到的github地址中找到任何样本集的声明。
缺少分号(在循环内)。未声明循环变量sampleSet
。 leftSamples
和rightSamples
来自哪里?循环变量不在循环内使用。左侧和右侧样本可能是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。到目前为止,我对这个翻译器没有任何疑问。