英語で読む

次の方法で共有


コンパイラ エラー CS1938

名前 'name' は、'equals' の右側のスコープにありません 'equals' のいずれかの側で式の交換を検討してください。

equals キーワードは、2 つの式が等しいかどうかを判断するために join 句で使用される特別な演算子です。 左側のソース シーケンスの範囲変数は等式の左側のスコープ内にあり、右側のソースの範囲変数は等式の左側のスコープ内のみにあります。 これは、次のコード例で IntelliSense を使用して試すことにより確認できます。

このエラーを解決するには

  1. 次の例のコメント行に示すように、2 つの範囲変数の位置を交換します。

次のコードでは CS1938 が生成されます。

C#
// 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 };  
    }  
}  

関連項目