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


Ошибка компилятора CS1938

Обновлен: Ноябрь 2007

Сообщение об ошибке

Имя "name" находится вне области видимости правой части конструкции "equals". Возможно, требуется поменять местами выражения с обеих сторон "equals".
The name 'name' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.

Ключевое слово equals является специальным оператором, используемым в предложении join для определения равенства двух выражений. Переменная диапазона для правой части исходной последовательности находится в области в левой части равенства, а переменная диапазона для правой части источника находится только в области в левой части равенства. Это можно проверить, поэкспериментировав с IntelliSense в следующем примере кода.

Исправление данной ошибки

  • Поменяйте местами две переменные диапазона, как показано в закомментированной строке в следующем примере.

Пример

В следующем коде возникает ошибка CS1938.

// cs1938.cs
using System.Linq;
class Test
{
    static void Main()
    {
        int[] sourceA = { 1, 2, 3, 4, 5 };
        int[] sourceB = { 3, 4, 5, 6, 7 };

        var query = from a in sourceA
                    join b in sourceB on b equals a // CS1938
                    // Try the following line instead.
                    // join b in sourceB on a equals b
                    select new { a, b };
    }
}

См. также

Ссылки

Предложение join (Справочник по C#)