2011-08-07 46 views
-1

可能重複:
Re-write F# code in VB.NET重新編寫F#代碼

前一段時間,我做了一些F#的編程,下面的代碼是用來序列化/反序列化FLOAT32數組:

#light 
open System 
open System.IO 
open System.Runtime.Serialization 
open System.Text 

let write(x : float32[]) = 
    let ds = new DataContractSerializer(typeof<float32[]>) 
    let ms = new MemoryStream() 
    ds.WriteObject(ms, x) 
    ms.ToArray() 

let read(x : byte[]) = 
    let ds = new DataContractSerializer(typeof<float32[]>) 
    let ms = new MemoryStream(x) 
    ds.ReadObject(ms) :?> float32[] 

let x = [|1.0f; 2.0f; 3.0f|] 
let xb = write(x) 
let y = read(xb) 
printfn "x = %A" x 
printfn "y = %A" x 
printfn "Done" 

但是,現在,我必須做在VB.NET一些編程序列化/反序列化浮動32陣列。由於F#編程不適用於GUI,但GUI對於我當前的編程是必需的。 我想知道如何在VB.NET中重寫上述代碼。例如,我有一個float32數組,(我不知道VB.NET中的數據類型等同於F#中的float32數組)(1.0,2.0,3.0);我想使用DataContractSerializer將其序列化,然後將其讀回,以便仍可以獲得相同的float32數組。 請分享您的代碼。 謝謝你,祝你有美好的一天! 約翰

+1

添加上下文時,請編輯原始問題(已有答案)。沒有必要開一個新的問題。 – David

回答

0

更多或更少的這種

Public Function write(x As [Single]()) As Byte() 
    Dim ds = New DataContractSerializer(GetType([Single]())) 
    Dim ms As New MemoryStream() 
    ds.WriteObject(ms, x) 
    Return ms.ToArray() 
End Function 

Public Function read(x As Byte()) As [Single]() 
    Dim ds As New DataContractSerializer(GetType(Singlet32())) 
    Dim ms As New MemoryStream(x) 
    Return DirectCast(ds.ReadObject(ms), [Single]()) 
End Function 

我覺得你可以把它從這裏?

+0

你好:非常感謝,你的代碼工作。 ()()) Dim ms As New MemoryStream(x) Dim Function As New DataContractSerializer(GetType(Single())) Dim ms As New MemoryStream(x) 返回DirectCast(ds.ReadObject(ms),[Single]()) End Function – John

+0

您可以調高它並接受 –