在VB.NET中重新编写F#代码

在VB.NET中重新编写F#代码,f#,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 MemoryS

可能重复:

不久前,我做了一些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"
#灯
开放系统
开放系统
open System.Runtime.Serialization
开放系统.Text
让我们写(x:float32[]=
设ds=新的DataContractSerializer(typeof)
设ms=newmemoryStream()
ds.WriteObject(ms,x)
托雷女士()
让我们读取(x:字节[])=
设ds=新的DataContractSerializer(typeof)
设ms=newmemoryStream(x)
ds.ReadObject(ms):?>float32[]
设x=[| 1.0f;2.0f;3.0f |]
设xb=写入(x)
设y=读取(xb)
printfn“x=%A”x
printfn“y=%A”x
打印fn“完成”
然而,现在,我不得不在VB.NET中做一些编程来再次序列化/反序列化float32数组。因为F#编程不适合GUI,但GUI是我当前编程所必需的。 我想知道如何在VB.NET中重写上述代码。 例如,我有一个float32数组(我不知道VB.NET中的什么数据类型与F#中的float32数组等效)为(1.0,2.0,3.0);我想使用DataContractSerializer对其进行序列化,然后将其读回,以便仍然可以获得相同的float32数组。 请分享你的代码。 谢谢,祝你今天愉快! 约翰

或多或少是这样

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

我想你可以从这里开始吗?

添加上下文时,请编辑原始问题(已经有答案)。没有必要提出新问题。您好:非常感谢,您的代码可以正常工作。函数read中有一点键入错误:公共函数read(x作为Byte())作为[Single]()将ds作为新的DataContractSerializer(GetType(Single())将ms作为新的MemoryStream(x)返回DirectCast(ds.ReadObject(ms),[Single]())结束函数您可以向上投票并接受它