从F#初始化C#-struct?

kno*_*cte 2 c# f# struct c#-to-f#

我有一个简单的C#结构,我想从F#中使用它:

public struct Stat : IEquatable<Stat>
{
    public ulong st_dev;
    public long st_blocks;
}
Run Code Online (Sandbox Code Playgroud)

我发现这样做的方式感觉太C#ish并且对我来说是可变的:

stbuf <- new Stat()
stbuf.st_blocks <- 0
stbuf.st_dev <- 1
Run Code Online (Sandbox Code Playgroud)

更不用说在C#中我可以使用漂亮的new Stat { st_blocks = 0, st_dev = 1 }语法糖......

现在我已经转换为F#,我开始对赋值运算符过敏<-,所以有什么方法可以改善它吗?

GS *_*ica 5

有在语法构造器中设置属性或可变字段的语法:

stbuf <- Stat(st_blocks = 0L, st_dev = 1UL)
Run Code Online (Sandbox Code Playgroud)

请注意,您不需要new在F#中,除非通常建议使用它IDisposable.还要注意指定适当类型的文字所需的后缀.