如何在 C# 中为记录类型创建多个构造函数?
我创建了这样的记录类型:
public record Person(int Id, string FirstName, string LastName)
Run Code Online (Sandbox Code Playgroud)
现在我想引入另一个不带参数的构造函数重载,我该怎么做?在正常的课堂上我会做这样的事情:
public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Person()
{
}
public Person(int id, string firstName, string lastName)
{
Id = id;
FirstName = firstName;
LastName = lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
kof*_*fus 53
只需添加您想要的构造函数,如下所示:
record Rank(int level, string description);
record Manager(string FirstName, Rank Rank) {
public Manager() : this("", new Rank(0, "Entry")) { }
// public Manager(string FirstName, Rank Rank) is auto generated
}
Run Code Online (Sandbox Code Playgroud)
小智 16
您可以像下面这样编写代码:
public record Person
{
public int Id { get; init; }
public string FirstName { get; init; }
public string LastName { get; init; }
//constructor
public Person()
{
//init or do something
}
//overload constructor
public Person(int id, string firstName, string lastName)
{
Id = id;
FirstName = firstName;
LastName = lastName;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
使用可选参数。
public record Person(int Id = default, string FirstName = null, string LastName = null);
Run Code Online (Sandbox Code Playgroud)
小智 7
你可以这样写:
public record Person(int Id,string FirstName,string LastName){
public Person(YourDto item):this(item.Id,item.FirstName,item.LastName){}
}
Run Code Online (Sandbox Code Playgroud)
因此,在构造函数中,您可以传递 Dto 项。