我有以下课程:
public class MailData : IDisposable
{
public IDictionary<String, Tuple<Byte[], String>> Attachments { get; set; }
public String From { get; set; }
public IList<String> To { get; set; }
public MailType Type { get; set; }
} // MailData
处理课程的正确方法是什么?
我的意思是,我想我应该从Byte[]
...
Dictionary
其他属性怎么样?
答案 0 :(得分:4)
.NET是一个托管环境,你必须允许垃圾收集器完成它的工作,没有理由你处理简单的引用类,byte[]
仍然是一个引用。
通常使用Dispose
模式释放有价值的资源,例如文件I / O,各种Streams,数据库连接......等等。
但是,在您的情况下,您无需自己做任何事情。
欢迎来到C#的托管世界。
答案 1 :(得分:1)
你不需要做任何事情,除非你的MailType
类也是一次性的,在这种情况下你会想要处理它。您不需要清除任何集合,因为它们将在它们超出范围后的某个时间与它们的内容一起被垃圾收集。
答案 2 :(得分:1)
除非MailType
有一些非托管资源,否则你不应该做任何事情。在这种情况下,您应该重写此类的Dispose并调用MailType对象的Dispose。
此外,如果字典中的字节数很大,则应将实例包装在using
语句中。
using(var m = new MailData())
{
// use the object here
} // the m.Dispose() gets called here
答案 3 :(得分:0)