Ошибка компилятора CS1649
Обновлен: Ноябрь 2007
Сообщение об ошибке
Члены поля только для чтения "идентификатор" не могут быть переданы ref или out (кроме как в конструкторе)
Members of readonly field 'identifier' cannot be passed ref or out (except in a constructor)
Эта ошибка возникает, если подставить переменную в функцию, которая является членом поля 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);
}
}