Поделиться через


Ошибка компилятора 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
    }
}