它分配的需要处理的非托管资源是什么?它不仅仅是一个简单的托管数据阵列吗?那么为什么要处置?
答案 0 :(得分:50)
邮件邮件附件 - >附件是Streams - >流将被处置。
以下是MailMessage的反编译Dispose方法:
protected virtual void Dispose(bool disposing)
{
if (disposing && !this.disposed)
{
this.disposed = true;
if (this.views != null)
{
this.views.Dispose();
}
if (this.attachments != null)
{
this.attachments.Dispose();
}
if (this.bodyView != null)
{
this.bodyView.Dispose();
}
}
}
作为一般规则,如果任何包含的子节点实现它,则类应该实现IDisposable。
答案 1 :(得分:13)
MailMessage可以有附件,附件由MIME部分表示,MIME部分本身包含Stream。此Stream需要关闭,因为它可能包含指向基础数据的非托管指针。