- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
看来我现在几乎每天都在这里问问题。我不确定这是好事还是坏事...
今天的“WTF flavor ”涉及我在使用来自 NI Measurement Studio 对象的函数时完全和完全无能为力。与我之前的大多数问题一样,这是关于实习项目的,我的任务是将 VB6 项目转换为 .Net Framework 2.0 中的 C#。
原始的 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);
仅返回:无法将 ref double[] 转换为 ref 对象
所以我做了我认为显而易见的事情。我将 realData 和 imgData 装箱到 object
中,并将它们传递给函数。然而,它不太喜欢那个。如果我在不使用 ref
的情况下传递新对象,它坚持认为我需要通过 with ref
传递它们。如果我用 ref
传递它们,它会给我错误:
无法将 ref double[] 转换为 ref 对象
。
嗯……这看起来很眼熟。当我在两个变量的实例化中将 double[]
更改为 Object
时,我终于让编译器停止产生错误。但是...当我运行该函数时,出现了 Type Mismatch
错误。
我真的不知道我从这里去哪里。互联网上几乎没有关于使用 Measurement Studio 进行 C# 编程的信息。即使有,我也确信解决方案比我预期的要简单得多。历史告诉我,当出现我无法解决的错误时,它几乎总是一些愚蠢的事情。
最佳答案
在您的 FFT 函数中试一试:
object realData = new double[1000];
object imgData = new double[1000];
ReFFT(new object(), ref realData, ref imgData);
double[] realDataArray = (double[])realData;
通过将对象实例化为一个新的 double[1000],您正在确定尽管您将 realData 视为一个对象,但它的基础类型是 double[]。稍后,在方法调用之后,您将通过创建一个新数组并将前一个数组转换为原始类型来关闭 realData 数组。它可能比严格需要的装箱/拆箱更多,但希望它能说明问题
尝试 2:
double[] somerealData = new double[1000];
double[] someimgData = new double[1000];
object realData, imgData;
realData = somerealData;
imgData = someimgData;
ReFFT(new object(), ref realData, ref imgData);
double[] realDataArray = (double[])realData;
Console.WriteLine(realDataArray.Length);
realDataArray[0] = 1.0d;
Console.WriteLine(realDataArray[0]);
我已经在 .NET 2.0 控制台应用程序中尝试了第二种方法,所以我很确定它有效。如果没有,那么我们需要退后一步,重新评估情况。
尝试 3:刚刚注意到 ReFFT 方法的第一个参数是一个 float[]。让我们试试这个:
double[] somerealData = new double[1000];
double[] someimgData = new double[1000];
//float[] zData placeholder since array comes from input param
object realData, imgData, zObj;
realData = somerealData;
imgData = someimgData;
zObj = zData;
ReFFT(zObj, ref realData, ref imgData);
double[] realDataArray = (double[])realData;
Console.WriteLine(realDataArray.Length);
realDataArray[0] = 1.0d;
Console.WriteLine(realDataArray[0]);
关于c# - 无法将 ref double[] 转换为 ref 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3206673/
我的一位教授给了我们一些考试练习题,其中一个问题类似于下面(伪代码): a.setColor(blue); b.setColor(red); a = b; b.setColor(purple); b
我似乎经常使用这个测试 if( object && object !== "null" && object !== "undefined" ){ doSomething(); } 在对象上,我
C# Object/object 是值类型还是引用类型? 我检查过它们可以保留引用,但是这个引用不能用于更改对象。 using System; class MyClass { public s
我在通过 AJAX 发送 json 时遇到问题。 var data = [{"name": "Will", "surname": "Smith", "age": "40"},{"name": "Wil
当我尝试访问我的 View 中的对象 {{result}} 时(我从 Express js 服务器发送该对象),它只显示 [object][object]有谁知道如何获取 JSON 格式的值吗? 这是
我有不同类型的数据(可能是字符串、整数......)。这是一个简单的例子: public static void main(String[] args) { before("one"); }
嗨,我是 json 和 javascript 的新手。 我在这个网站找到了使用json数据作为表格的方法。 我很好奇为什么当我尝试使用 json 数据作为表时,我得到 [Object,Object]
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我听别人说 null == object 比 object == null check 例如: void m1(Object obj ) { if(null == obj) // Is thi
Match 对象 提供了对正则表达式匹配的只读属性的访问。 说明 Match 对象只能通过 RegExp 对象的 Execute 方法来创建,该方法实际上返回了 Match 对象的集合。所有的
Class 对象 使用 Class 语句创建的对象。提供了对类的各种事件的访问。 说明 不允许显式地将一个变量声明为 Class 类型。在 VBScript 的上下文中,“类对象”一词指的是用
Folder 对象 提供对文件夹所有属性的访问。 说明 以下代码举例说明如何获得 Folder 对象并查看它的属性: Function ShowDateCreated(f
File 对象 提供对文件的所有属性的访问。 说明 以下代码举例说明如何获得一个 File 对象并查看它的属性: Function ShowDateCreated(fil
Drive 对象 提供对磁盘驱动器或网络共享的属性的访问。 说明 以下代码举例说明如何使用 Drive 对象访问驱动器的属性: Function ShowFreeSpac
FileSystemObject 对象 提供对计算机文件系统的访问。 说明 以下代码举例说明如何使用 FileSystemObject 对象返回一个 TextStream 对象,此对象可以被读
我是 javascript OOP 的新手,我认为这是一个相对基本的问题,但我无法通过搜索网络找到任何帮助。我是否遗漏了什么,或者我只是以错误的方式解决了这个问题? 这是我的示例代码: functio
我可以很容易地创造出很多不同的对象。例如像这样: var myObject = { myFunction: function () { return ""; } };
function Person(fname, lname) { this.fname = fname, this.lname = lname, this.getName = function()
任何人都可以向我解释为什么下面的代码给出 (object, Object) 吗? (console.log(dope) 给出了它应该的内容,但在 JSON.stringify 和 JSON.parse
我正在尝试完成散点图 exercise来自免费代码营。然而,我现在只自己学习了 d3 几个小时,在遵循 lynda.com 的教程后,我一直在尝试确定如何在工具提示中显示特定数据。 This code
我是一名优秀的程序员,十分优秀!