我有一些可以使用方法重载/链接实现的功能,但我想知道是否可以使用可选参数实现相同的功能。这是我想要实现的示例,下面是带有方法链接的版本(希望这将使我的意图清晰)。这可以使用可选参数来完成吗?
// what I would like to do
private string CreateMessageFromTemplate(string templateId, Contact contact, string email = contact.emails.FirstOrDefault()) { ... }
//what I know I can do
private string CreateMessageFromTemplate(string templateId, Contact contact)
{
CreateMessageFromTemplate(templateId, contact, contact.emails.FirstOrDefault());
}
private string CreateMessageFromTemplate(string templateId, Contact contact, string email) { ... }
如您所见,我从contact 参数派生了默认值(如果您不给我特定的电子邮件,我将只使用列表中的第一个)。可选参数的默认值是否必须是静态的,或者它们可以是像我的示例中那样的表达式的结果?如果可以,正确的语法是什么?