Syntax 如何创建类实例并在F#中填充属性?

Syntax 如何创建类实例并在F#中填充属性?,syntax,f#,c#-to-f#,Syntax,F#,C# To F#,在C#中,我可以: 我能在F#中做同样的事情吗?我的意思是,创建一个类并指定一些属性。是: let n = Person(FirstName = "John", LastName = "Smith") 请注意,F#方法实际上比C#方法灵活得多,因为您可以对任何方法调用(而不仅仅是构造函数)使用“事后”属性赋值。例如,如果Person类型有一个名为CreatePerson:string->Person的静态方法,该方法创建一个新的Person并指定其名字,您也可以像这样使用它: let n =

在C#中,我可以:

我能在F#中做同样的事情吗?我的意思是,创建一个类并指定一些属性。

是:

let n = Person(FirstName = "John", LastName = "Smith")
请注意,F#方法实际上比C#方法灵活得多,因为您可以对任何方法调用(而不仅仅是构造函数)使用“事后”属性赋值。例如,如果
Person
类型有一个名为
CreatePerson:string->Person
的静态方法,该方法创建一个新的Person并指定其名字,您也可以像这样使用它:

let n = Person.CreatePerson("John", LastName = "Smith")
type Person()=
[]
val可变名字:字符串
[]
val可变lastName:字符串
成员x.FirstName
get()=x.firstName时
set(v)=x.firstNameF#也有一些基本类,这些类具有自动公开的属性,用于表示命名值的简单聚合,可以选择使用成员

type Person = {
    FirstName : string;
    LastName : string;
}

let p = {FirstName = "John"; LastName = "Smith"}

MSDN文档中是否包含方法调用+属性分配?@Daniel-简短的搜索没有发现任何结果。但是,它被隐藏在规范的方法应用程序解析部分中:。我以前读过这个,但从未使用过,所以我完全忘记了它。谢谢你提醒我!可能重复的
type Person() =

    [<DefaultValue>]
    val mutable firstName : string

    [<DefaultValue>]
    val mutable lastName : string

    member x.FirstName 
        with get() = x.firstName 
        and set(v) = x.firstName <- v

    member x.LastName 
        with get() = x.lastName 
        and set(v) = x.lastName <- v

let p = new Person(FirstName = "Nyi", LastName = "Than")
type Person = {
    FirstName : string;
    LastName : string;
}

let p = {FirstName = "John"; LastName = "Smith"}