为什么 .NET MailAddress 的 class 属性是只读的

Why .NET MailAddress' class properties are readonly

我想继承 MailAddress class 以使 COM 可见 class,但 MailAddress 没有无参数构造函数,而且 COM 没有将参数传递给构造函数的机制.

https://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress%28v=vs.110%29.aspx

所以,我必须像这样创建一个 class,考虑先创建它然后修改它的属性:

public class Recipient : MailAddress
{
    public Recipient()
        : base("")//this is the contructor that takes less parameters, but can also add the other contructor parameters here
    {

    }
}

但后来我意识到我不能修改它的属性,因为它们都是只读的

有人知道为什么它们是只读的吗?并且 class 附件是一样的。

MailAddress class 使用不可变模式 -- 因此实例一旦创建,就无法修改(此模式有一些好处 -- 因为除其他外,它可以提供很多帮助使用线程,因为没有锁争用问题)。

它在 Message 类型中放置的集合(to、from、cc 集合)可以修改。因此,您始终可以从其中一个中删除现有的 MailAddress 实例,然后创建一个新的 MailAddress class 并用修改后的值替换它。

希望这对您有所帮助,