2011-08-07 15 views
-1

可能性の重複: 再書き込みF#コード


Re-write F# code in VB.NET

いくつかの時間前、私はいくつかの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

こんにちは:ありがとう、あなたのコードが動作します。関数の読み込みに少し間違いがあります。パブリック関数read(x As Byte())として[Single]() Dim Ss新しいDataContractSerializer(GetType(Single)) Dim ms As New MemoryStream(x) DirectCastを返す(ds.ReadObject(ms)、[Single]()) 最終機能 – John

+0

これをupvoteしてから受け入れることができます –

関連する問題