共用方式為


編譯器錯誤 CS1649

更新:2007 年 11 月

錯誤訊息

無法傳遞 ref 或 out 給唯讀欄位 'identifier' 的成員 (除非是在建構函式中)

如果您傳遞變數給屬於 readonly 欄位成員的函式做為 ref 或 out 引數,便會發生這個錯誤。因為函式可能會修改 ref 和 out 參數,而這是不允許的。若要解決這個錯誤,請移除欄位的 readonly 關鍵字,或不要傳遞 readonly 欄位的成員給函式。例如,您可嘗試建立可修改的暫存變數,並傳遞該暫存變數做為 ref 引數,如下列範例所示。

範例

下列範例會產生 CS1649:

// CS1649.cs
public struct Inner
    {
        public int i;
    }

class Outer
{
    public readonly Inner inner = new Inner();
}

class D
{
    static void f(ref int iref)
    {
    }

    static void Main()
    {
        Outer outer = new Outer(); 
        f(ref outer.inner.i);  // CS1649
        // Try this code instead:
        // int tmp = outer.inner.i;
        // f(ref tmp);
    }
}