更新:2007 年 11 月

错误消息

对局部变量“variable”的赋值可能不正确,该变量是 using 或 lock 语句的参数。 Dispose 调用或解锁将发生在该局部变量的原始值上。

在有些情况中,usinglock 块将导致临时资源泄漏。下面是一个示例:

thisType f = null;

using (f)

{

f = new thisType();

...

}

在这种情况下,在 using 块的执行结束后将会释放变量 thisType 的原始值(如 null),但不会释放在该块内创建的 thisType 对象,尽管它最终会被回收。

要解决此错误,请使用以下窗体:

using (thisType f = new thisType())

{

...

}

在这种情况中,将释放新分配的 thisType 对象。

示例

以下代码将生成警告 CS0728。

 复制代码
// CS0728.cs

using System;
public class ValidBase : IDisposable
{
    public void Dispose() {  }
}

public class Logger
{
    public static void dummy()
    {
        ValidBase vb = null;
        using (vb) 
        {
            vb = null;  // CS0728
        }
        vb = null;
    }
    public static void Main() { }
}