Ошибка компилятора CS1939
Обновлен: Ноябрь 2007
Сообщение об ошибке
Невозможно передать переменную диапазона "имя" как параметр с ключевыми словами out или ref.
Cannot pass the range variable 'name' as an out or ref parameter.
Переменная диапазона — это предназначенная только для чтения переменная, которая вводится в выражение запроса в качестве идентификатора для каждого следующего элемента исходной последовательности. Поскольку эту переменную нельзя изменить, нет смысла передавать ее с помощью модификатора ref или out. Поэтому обе операции не являются допустимыми.
Исправление ошибки
- Передайте переменную диапазона по значению.
Пример
Следующий пример приводит к возникновению ошибки CS1939:
// cs1939.cs
using System.Linq;
class Test
{
public static void F(ref int i)
{
}
public static void Main()
{
var list = new int[] { 0, 1, 2, 3, 4, 5 };
var q = from x in list
let k = x
select Test.F(ref x); // CS1939
}
}