在VB.NET中重写F#代码

时间:2011-08-07 21:42:47

标签: 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中进行一些编程,以再次序列化/反序列化float32数组。由于F#编程不适合GUI,但GUI是我当前编程所必需的。 我想知道如何在VB.NET中重写上面的代码。 例如,我有一个float32数组(我不知道VB.NET中的数据类型与F#中的float32数组相同)(1.0,2.0,3.0);我想使用DataContractSerializer序列化它,然后读回来,所以我仍然可以得到相同的float32数组。 请分享您的代码。 感谢,并有一个愉快的一天! 约翰

1 个答案:

答案 0 :(得分: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

我想你可以从这里拿走它吗?