using 语句对变量进行多次赋值

using statement for multiple assignments to the variable

提问人:Ajinkya Jagtap 提问时间:1/31/2022 最后编辑:Ajinkya Jagtap 更新时间:1/31/2022 访问量:314

问:

我有一个System.Drawing.Pen类型的变量“pen”,它在特定方法中被多次分配。我想把它放在“使用”语句中。我该怎么做?

Pen pen = new Pen(Color.Gray);
// some code which uses gray value
pen = new Pen(Color.Green);
// some code which uses green value
pen = new Pen(Color.Red);
// some code which uses red value

提前致谢。

C# .net 使用语句

评论

2赞 Yong Shun 1/31/2022
using 语句仅适用于具有 implement 接口的对象。如果实现,那么是的,您可以使用该语句。IDisposablePenIDisposableusing
8赞 Damien_The_Unbeliever 1/31/2022
重新分配变量会破坏 的要点。您是否正在使用 C# 的奇怪变体,您必须为额外的变量付费?如果没有,只需 3 个单独的。using
3赞 ProgrammingLlama 1/31/2022
using Pen grayPen = new Pen(Color.Gray); using Pen greenPen = new Pen(Color.Green);等。?(如果您使用的是比 8 更旧的 C# 版本,则需要传统的样式块,但概念是相同的:每支笔一个变量)。using
1赞 canton7 1/31/2022
可以使用 3 个名称相同、作用域不同的独立变量:using (var pen = new Pen(Color.Gray)) { ... } using (var pen = new Pen(Color.Green)) { ... }

答:

4赞 Dmitry Bychenko 1/31/2022 #1

好吧,实现,因为它分配了非托管资源(),因此在一般情况下是必需的。 在当前代码中,存在资源泄漏PenIDisposableHPENusing

Pen pen = new Pen(Color.Gray);

// some code which uses gray value

pen = new Pen(Color.Green); // <- from now on Pen(Color.Gray) is leaked

// some code which uses green value
pen = new Pen(Color.Red);  // <- from now on Pen(Color.Green) is leaked
// some code which uses red value

您可以使用预定义的笔(不需要):using

Pen pen = Pens.Gray;

// some code which uses gray value

pen = Pens.Green;

// some code which uses green value

pen = Pens.Red;

// some code which uses red value

或者,如果要手动创建 s,请将它们包装成:Penusing

using (Pen pen = new Pen(Color.Gray)) {
  // some code which uses gray value
}

using (Pen pen = new Pen(Color.Green) {
  // some code which uses green value
}

using (Pen pen = new Pen(Color.Red)) {
  // some code which uses red value
}