SmtpClient和MailMessage都实现了IDisposable,所以我想让我的代码像这样
using (SmtpClient smtpClient = new SmtpClient("xxx", 587))
{
smtpClient.Credentials = new System.Net.NetworkCredential("email", "pass");
smtpClient.EnableSsl = true;
using (MailMessage mail = new MailMessage())
{
mail.Subject = "subject";
mail.From = new MailAddress("email", "name");
mail.To.Add(new MailAddress("email"));
mail.Body = "body";
mail.IsBodyHtml = true;
smtpClient.Send(mail);
}
}
我使用2个using语句正确使用,还是只需要第一个using语句?
感谢
答案 0 :(得分:1)
使用多个using语句没有任何内在错误。它将对象的生命周期保持在最低限度,这不是一件坏事。
答案 1 :(得分:1)
在嵌套using
语句时,在没有缩进的情况下执行此操作更为惯用:
using (SmtpClient smtpClient = new SmtpClient("xxx", 587))
using (MailMessage mail = new MailMessage())
{
smtpClient.Credentials = new System.Net.NetworkCredential("email", "pass");
smtpClient.EnableSsl = true;
mail.Subject = "subject";
mail.From = new MailAddress("email", "name");
mail.To.Add(new MailAddress("email"));
mail.Body = "body";
mail.IsBodyHtml = true;
smtpClient.Send(mail);
}
这并不总是可行,因为有时您需要在第一个和第二个using
之间进行一些处理。不过,它适用于你的例子。