閱讀英文

共用方式為


編譯器警告 (層級 2) CS0728

可能不正確地指派給了為 using 或 lock 陳述式引數的本機 'variable'。 本機原始值會發生 Dispose 呼叫或解除鎖定。

有許多情況, usinglock 區塊會導致暫時性的資源流失。 例如:

thisType f = null;

using (f)

{

f = new thisType();

...

}

在此例中,當 thisType 區塊完成執行,但在區塊內建立的 using 物件沒有被記憶體回收時 (雖然最後還是會回收),會處置變數 thisType 的原始值,例如 null。

若要解決這個錯誤,請使用下列格式:

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() { }  
}