对象初始化语法

我刚刚开始使用F#,我找不到在C#3中进行对象初始化的语法。

即给出这个:

public class Person { public DateTime BirthDate { get; set; } public string Name { get; set; } } 

我如何在F#中编写以下内容:

 var p = new Person { Name = "John", BirthDate = DateTime.Now }; 

你可以这样做:

 let p = new Person (Name = "John", BirthDate = DateTime.Now) 

CMS的答案绝对正确。 这里只是一个可能也有帮助的补充。 在F#中,你经常想要使用不可变属性来编写types。 使用“对象初始值设定项”语法时,属性必须是可变的。 F#中的一个替代方法是使用命名参数,它给了你一个类似的语法,但保持不变:

 type Person(name:string, ?birthDate) = member x.Name = name member x.BirthDate = defaultArg birthDate System.DateTime.MinValue 

现在我们可以写:

 let p1 = new Person(name="John", birthDate=DateTime.Now) let p2 = new Person(name="John") 

代码要求您指定名称,但生日是一个可选的参数与一些默认值。