co2*_*f2e 12 .net c# using-statement
我有一个代码块如下,我使用3个嵌套using块.
我发现使用try finally块我可以避免这种情况但是如果有两个以上的使用语句,那么最好的方法是什么?
private FileStream fileStream = null;
private Document document = null;
private PdfWriter pdfWriter = null;
using (fileStream = new FileStream("ABC.pdf", FileMode.Create))
{
using (document = new Document(PageSize.A4, marginLeft, marginRight, marginTop, marginBottom))
{
using (pdfWriter = PdfWriter.GetInstance(document, fileStream))
{
document.AddAuthor(metaInformation["author"]);
document.AddCreator(metaInformation["creator"]);
document.AddKeywords("Report Generation using I Text");
document.AddSubject("Document subject");
document.AddTitle("The document title");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jan*_*mer 13
您可以通过以下方式删除嵌套缩进:
using (var fileStream = new FileStream("ABC.pdf", FileMode.Create))
using (var document = new Document(PageSize.A4, marginLeft, marginRight, marginTop, marginBottom))
using (var pdfWriter = PdfWriter.GetInstance(document, fileStream))
{
// code
}
Run Code Online (Sandbox Code Playgroud)
避免缩进的更简单一些的方法:
using (var fileStream = new FileStream("ABC.pdf", FileMode.Create))
using (var document = new Document(PageSize.A4, marginLeft, marginRight, marginTop, marginBottom))
using (var pdfWriter = PdfWriter.GetInstance(document, fileStream))
{
document.AddAuthor(metaInformation["author"]);
document.AddCreator(metaInformation["creator"]);
document.AddKeywords("Report Generation using I Text");
document.AddSubject("Document subject - Describing the steps creating a PDF document");
document.AddTitle("The document title - PDF creation using iTextSharp");
}
Run Code Online (Sandbox Code Playgroud)
正如乔恩·斯凯特(Jon Skeet)所指出的,这些变量不必是实例变量,因为它们using无论如何都放置在这些块之后。
您可以改用上面的代码中所示的局部变量。