我需要将此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();
使用在线转换器。 C#到VB转换器:
Dim trackGain As New TrackGain(samplerate, samplesize)
Dim gain As Double = trackGain.GetGain()
Dim peak As Double = trackGain.GetPeak()
您上面显示的c#代码有错误。可能是用伪代码编写的。我在您提到的github地址上没有找到任何样本集的声明。
分号缺失(在循环内)。未声明循环变量developerFusion。 sampleSet
和leftSamples
来自哪里?循环内部不使用循环变量。左右样本可能是sampleSet的一部分。如果我纠正此问题,则可以使用这些在线转换器之一来转换代码。
C#:
rightSamples
VB:
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();
毕竟,这两个版本看起来没什么不同!
在用不同语言编写的程序集中引用非常简单。我经常从F#引用C#代码,并从C#引用VB.NET代码。只要确保将两个项目编译为针对相同的框架版本(例如.NET 4.5或Mono 2.10和CPU体系结构)即可。
如果您需要文件驻留在相同的程序集中。我建议您学习C#语法并手动进行转换。
编辑:浏览存储库后,我只看到了几个类。除了学习新语言外,这也是一种提高您已经熟悉的语言的编写代码和阅读代码的能力的好方法。
一个很好的在线解决方案,可以将.NET转换为C#,反之亦然,因为JavaScript是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()
。到目前为止,我对这个翻译器没有任何问题。