【发布时间】:2018-09-28 01:13:55
【问题描述】:
以下代码为何或如何工作:
var mail = new MailMessage
{
To = { "hello@abc.com" }
};
鉴于MailMessage.To 都是只读属性,并且是赋值运算符?
据我所知,此语法会触发 MailAddressCollection 上的 Add 方法,但我找不到解释 MailAddressCollection 的魔法的文档,或者它是否与 Collection<T> 相关它派生的类型或它继承的接口。
为了表明上述语法被区别对待,以下方法给出了编译时错误,抱怨To 属性是只读的:
// Attempt 1
var mail = new MailMessage
{
To = "hello@abc.com"
};
// Attempt 2
var mail = new MailMessage();
mail.To = { "hello@abc.com" }
// Attempt 3
var mail = new MailMessage
{
To = new MailAddressCollection()
};
我确信还有其他此类初始化的示例,但MailMessage 是我第一次遇到它。
【问题讨论】:
标签: c# properties initialization c#-7.0