コンパイラ エラー CS1938
名前 'name' は、'equals' の右側のスコープにありません 'equals' のいずれかの側で式の交換を検討してください。
equals
キーワードは、2 つの式が等しいかどうかを判断するために join
句で使用される特別な演算子です。 左側のソース シーケンスの範囲変数は等式の左側のスコープ内にあり、右側のソースの範囲変数は等式の左側のスコープ内のみにあります。 これは、次のコード例で IntelliSense を使用して試すことにより確認できます。
- 次の例のコメント行に示すように、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 };
}
}
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。