컴파일러 오류 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
}
}