Ответ 1
Вы можете сделать это следующим образом:
let p = new Person (Name = "John", BirthDate = DateTime.Now)
Я только начинаю с F #, и я не могу найти синтаксис для инициализации объекта, как в С# 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 # вы часто хотите написать тип, используя только неизменяемые свойства. При использовании синтаксиса "инициализатор объекта" свойства должны быть изменены. Альтернативой в 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")
В коде требуется указать имя, но день рождения - необязательный аргумент с некоторым значением по умолчанию.
Вы также можете опустить ключевое слово new
и использовать менее подробный синтаксис:
let p = Person(BirthDate = DateTime.Now, Name = "John")
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/members/constructors