我应该在循环内部还是外部使用using
块?有没有明显的性能差异? Graphics
对象的情况有什么不同吗?虽然第二种方法可能看起来更好,但while
可能是一个长块并且使代码的可读性降低。
while (i < 100)
{
using(Graphics g = Graphics.FromImage(bitmap)
{
g.DrawImage(...);
}
}
VS
using(Graphics g = Graphics.FromImage(bitmap)
{
while (i < 100) // a long while block
{
// I may use other functions such as g.DrawLine .. or g.DrawText ...
// Moreover while could be a long block
g.DrawImage(...);
}
}
答案 0 :(得分:4)
除非你为每个循环使用不同的Bitmap,否则你应该将using块放在它之外。
答案 1 :(得分:2)
在while循环之外的性能方面,所以你不必制作100个对象。这可能取决于您希望如何管理异常。
答案 2 :(得分:2)
根据经验,如果您计划仅使用对象一次或将对象设计为不重复使用,请将using
置于循环内(作为示例,请记住SQLCommand类)。否则将它放在循环之外。
在您的特定情况下,如果您的目的是绘制相同的图像100次,那么在循环之外是可行的方法。另一方面,如果你的意图是在循环中绘制100个不同的图像,那么唯一可行的方法是将using
放在循环中,因为Graphics
对象不能重用另一张图片。
答案 3 :(得分:1)
鉴于示例代码,我绝对会选择第二个选项并将循环放在使用中。这种方式的表现要好得多。
如果还有其他逻辑正在改变您在循环中间使用的位图,则可能需要考虑第一个选项。请注意,您可能会受到性能影响。