相关疑难解决方法(0)

如何使用默认构造函数创建记录类

结构得到了默认的构造函数,就像我一样

type tagONEDEV_FlowRec =
    struct
        .......
    end
Run Code Online (Sandbox Code Playgroud)

我可以这样做,new DeviceModel.tagONEDEV_FlowRec()但它无法解决这个问题:

let (<++|) device bytes size =
    let unmanagedPtr = Marshal.AllocHGlobal(size : int)
    Marshal.Copy( (bytes : byte array), 0, unmanagedPtr, size)
    Marshal.PtrToStructure(unmanagedPtr, (device : obj)) // Here
    Marshal.FreeHGlobal(unmanagedPtr)
Run Code Online (Sandbox Code Playgroud)

我需要一个类似的记录课

[<type:StructLayout(LayoutKind.Sequential, Pack=1, CharSet=CharSet.Ansi)>]
type tagONEDEV_FlowRec = { 
    mutable ....;}
Run Code Online (Sandbox Code Playgroud)

要么

type tagONEDEV_FlowRec =
    class
        .......
    end
Run Code Online (Sandbox Code Playgroud)

但是这里没有默认的构造函数,并且结构非常大,无法手动初始化它们,所以如何将这些类与默认构造函数一起使用?

如果我找不到解决方案,我认为在C#或甚至VB.NET上重新编写这部分将会更快.听起来很像拐杖解决方案,但看起来我还不能用F#OOP部分拨号.

另外一个:我不想输入的东西是:

               {TimeRec     = 0; 
                Num         = 0us;
                FlagErr     = 0us;
                C6          = 0.0;
                C2H6        = 0.0;
                C3H8        = 0.0;
                CH4         = 0.0;
                CO2 …
Run Code Online (Sandbox Code Playgroud)

f# constructor struct class

5
推荐指数
1
解决办法
3987
查看次数

标签 统计

class ×1

constructor ×1

f# ×1

struct ×1