2010-06-05 114 views
1

我只是个初学者在编程我想从C#到F#隐蔽一些代码,将指针C#类型转换为F#?

我已经encotered验证码:

float[] v1=new float[10] 

我需要使用该指针传递给函数:

ComputeBuffer<float> bufV1 = 
    new ComputeBuffer<float>(Context, ComputeMemoryFlags.ReadWrite | 
     ComputeMemoryFlags.UseHostPointer, v1); 

如果我在创造F#这样的数组:

let v1 = [| 1.0..10.0 |] 

和现在叫这样的funaction:

let bufV1 = new ComputeBuffer<float>(Context, 
    ComputeMemoryFlags.ReadWrite ||| 
     ComputeMemoryFlags.UseHostPointer, v1) 

它是一个错误?我如何传递指针?

回答

2

不是错误。

需要指出的是v1不是指针,它是.Net中的一个对象。

+0

非常感谢你的每一个,答案工作,并帮助我提前移植代码 – Brendon 2010-06-05 19:47:17

5

(在.NET中,我们称这些东西引用对象; v1是一个数组对象的引用指针是不同的东西)

注意什么F#是指作为float就是C#调用一个double。其中f后缀,使值是F#float32 S(例如C#float)你可能需要

let v1 = [| 1.0f .. 10.0f |] 

+0

如果在C#中的浮点类型它应该在F# – Brendon 2010-06-05 18:02:31

+1

在F#它称为'float32'(或者你可以使用完整的.NET名称,'System.Float',这对所有语言都是一样的) – Brian 2010-06-05 18:32:27

+0

我试图做 “open System.Float” 并且得到了“错误FS0039:命名空间'Float'未定义' 我能做什么? – Brendon 2010-06-05 19:42:35