2010-06-05 91 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