当前位置:  开发笔记 > 编程语言 > 正文

对象初始化语法

如何解决《对象初始化语法》经验,为你挑选了2个好方法。

我刚刚开始使用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 };

CMS.. 130

你可以这样做:

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


Tomas Petric.. 96

CMS的答案肯定是正确的.这只是一个可能也有帮助的补充.在F#中,您经常要使用不可变属性来编写类型.使用"对象初始化程序"语法时,属性必须是可变的.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")

代码要求您指定名称,但birthday是具有某个默认值的可选参数.



1> CMS..:

你可以这样做:

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



2> Tomas Petric..:

CMS的答案肯定是正确的.这只是一个可能也有帮助的补充.在F#中,您经常要使用不可变属性来编写类型.使用"对象初始化程序"语法时,属性必须是可变的.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")

代码要求您指定名称,但birthday是具有某个默认值的可选参数.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有