【发布时间】:2021-10-04 12:53:59
【问题描述】:
我正在尝试为以下内容定义记录类型,而不是作为一个类
public class Contact
{
public string Name {get;set;}
public string Email {get;set;}
public string PhoneNo {get;set;}
public DateTime UpdatedAt {get;set;} = DateTime.Now;
}
由于UpdatedAt 是一个不可为空的字段,如果我使用记录的最基本构造函数,我们每次调用记录时都需要传递DateTime.Now。还有其他方法吗?而不是这样做:
public record Contact(string Name, string Email,string PhoneNo, DateTime UpdatedAt);
var records = new Contact("My Name", "a@abc.com", "123456", DateTime.Now)
【问题讨论】:
-
你想传递什么?
-
records 可以像类构造函数一样具有参数的默认值。它们必须是编译时常量,而DateTime.Now是运行时值。只需将默认值添加到record合约,如下所示:public record Contact(string Name, string Email, string PhoneNo, DateTime UpdatedAt = default); -
@nbokmans 不正确 - 记录的默认参数值必须是编译时常量,不幸的是
DateTime.Now不是 -
作为旁注 OP -
DateTime.UtcNow可能也是您想要用于UpdatedAt的内容,如果它由于时区复杂性而进入数据库