Кажется, что я здесь задаю вопрос примерно каждый день. Я не уверен, что это хорошо или плохо ...Невозможно преобразовать ref double [] для возврата объекта
Сегодняшний «Flavor-Of-The-WTF» включает в себя мою полную и полную бесшумность при использовании функции из объекта NI Measurement Studio. Как и в большинстве моих предыдущих вопросов, это касается проекта стажировки, где мне поручено перевести проект VB6 на C# в .NET Framework 2.0.
Исходный код VB выглядит примерно так:
Public Sub FFT(ZData() As Single, FFTData() As Single)
Dim realdata As Variant
Dim imgdata As Variant
// (... Some unrelated other code in here ...)
// Here we pass three variables to a NI CWDSP object's ReFFT function
CWDSP1.ReFFT ZData, realdata, imgdata
// (... More unrelated code ...)
End Sub
я застрял в MsgBox в одной точке, чтобы увидеть, как realdata и imgdata были интерпретированы. Они оба - Double()
. Он отлично работает для того, что он делает, в оригинальной программе. По общему признанию, мое глубокое знание оригинальной программы является лишь посредственным, так как я недавно получил проект, и у меня есть только несколько лет программирования под моим поясом (и не годы машиностроения). Программист был инженером-механиком, сама заявка измерительный инструмент для машинного выхода).
Принимая код к C#, я попытался переписать его так:
private void FFT(float[] ZData, float[] FFTData){
double[] realData = new double[1000];
double[] imgData = new double[1000];
// (... Unrelated intermediate code ...)
DSP.ReFFT(ZData, realData, imgData);
// (... Unrelated intermediate code ...)
}
Как вы можете видеть, я начал делать это в основном так же, как в оригинальном VB. Появилась следующая ошибка: Cannot Convert double[] to ref object
Ну, это нехорошо. Так что я пробовал: DSP.ReFFT(ZData, ref realData, ref imgData);
только, чтобы вернуться: Cannot Convert ref double[] to ref object
Так что я сделал то, что я думал, что было очевидно. Я вложил realData и imgData в object
s и передал их функции. Однако это не слишком нравится. Если я передаю новые объекты без ref
, он настаивает на том, что мне нужно передать их сref
. Если я передам их ref
, это даст мне ошибку:
Cannot Convert ref double[] to ref object
.
Huh ... это выглядит знакомым. Я, наконец, заставил компилятор прекратить создавать ошибки, когда я изменяю double[]
на Object
в экземпляре двух переменных. Но ... когда я запускаю функцию, я получаю ошибку Type Mismatch
.
Я действительно понятия не имел, куда я иду отсюда. Информации о программировании для C# с Measurement Studio там нет в Интернете. Даже если бы это было так, я уверен, что решение намного проще, чем я ожидаю. История научила меня, что, когда есть ошибка, я не могу понять, это почти всегда что-то глупое.
Является ли DSP-класс .NET? – Robaticus
Нет, .COM. Извините за не указание. – KChaloux
В коде VB6 какие типы 'realdata' и' imgdata' фактически хранятся? Что такое подпись метода класса DSP? –