对象初始化语法
我刚刚开始使用 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 };
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你可以这样做:
You can do it like this:
CMS的答案绝对是正确的。 这里只是补充一项可能也有帮助的内容。 在 F# 中,您通常希望仅使用不可变属性来编写类型。 当使用“对象初始值设定项”语法时,属性必须是可变的。 F# 中的另一种选择是使用命名参数,它为您提供类似的语法,但保持事物不可变:
现在我们可以编写:
代码要求您指定名称,但生日是具有某些默认值的可选参数。
the answer from CMS is definitely correct. Here is just one addition that may be also helpful. In F#, you often want to write the type just using immutable properties. When using the "object initializer" syntax, the properties have to be mutable. An alternative in F# is to use named arguments, which gives you a similar syntax, but keeps things immutable:
Now we can write:
The code requires you to specify the name, but birthday is an optional argument with some default value.
您还可以省略
new
关键字并使用不太详细的语法:https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/members/constructors
You can also omit the
new
keyword and use less verbose syntax:https://learn.microsoft.com/en-us/dotnet/fsharp/language-reference/members/constructors