Share via


컴파일러 오류 CS1657

업데이트: 2007년 11월

오류 메시지

'parameter'은(는) 'reason'이므로 ref 또는 out 인수로 전달할 수 없습니다.
Cannot pass 'parameter' as a ref or out argument because 'reason''

이 오류는 변수가 읽기 전용인 컨텍스트에서 이 변수를 ref 또는 out 인수로 전달하는 경우에 발생합니다. 읽기 전용 컨텍스트에는 foreach 반복 변수, using 변수 및 fixed 변수가 포함됩니다. 이 오류를 해결하려면 using 블록, foreach 문 및 fixed 문에서 ref 또는 out 매개 변수로 foreach, using 또는 fixed 변수를 취하는 함수를 호출하지 마십시오.

예제

다음 샘플에서는 CS1657 오류가 발생하는 경우를 보여 줍니다.

// CS1657.cs
using System;
class C : IDisposable
{
    public int i;
    public void Dispose() {}
}

class CMain
{
    static void f(ref C c)
    {
    }
    static void Main()
    {
        using (C c = new C())
        {
            f(ref c);  // CS1657
        }
    }
}

다음 코드에서는 fixed 문에서 동일한 문제가 발생함을 보여 줍니다.

// CS1657b.cs
// compile with: /unsafe
unsafe class C
{
    static void F(ref int* p)
    {
    }

    static void Main()
    {
        int[] a = new int[5];
        fixed(int* p = a) F(ref p); // CS1657
    }
}