コンパイラ エラー CS1942Compiler Error CS1942

'clause' 句の式の型が正しくありません。The type of the expression in the 'clause' clause is incorrect. 'method' の呼び出しで型を推論できませんでした。Type inference failed in the call to 'method'.

通常、このエラーは、範囲変数に明示的な型が正しく指定されていない場合に生成されます。This error is typically generated when the range variable has been given an incorrect explicit type.

このエラーを解決するにはTo correct this error

  1. 範囲変数が明示的に型指定されている場合は、その型が、反復処理するコレクション内の要素と同じ型か、またはその要素の型から暗黙的に変換できる型どうかを確認します。If the range variable is explicitly typed, make sure that the type is either the same as, or implicitly convertible from, the type of the elements in the collection it iterates. 範囲変数の前に var キーワードが指定されている場合は、var を削除します。If the range variable is preceded with the var keyword, remove var.

Example

次のコードでは CS1942 が生成されます。The following code generates CS1942:

// cs1942.cs  
class Program  
    {  
        static void Main(string[] args)  
        {  
            var x = from var i in Enumerable.Range(1, 100) // CS1949  
                    select i; //CS1942  
        }  
    }  

範囲変数に var を使用すると、var が型ではないことで基になる Cast<T> 操作に失敗するため、CS1942 は CS1949 に関連して発生します。CS1942 is related to CS1949 because the use of var with a range variable causes the underlying Cast<T> operation to fail because var is not a type.

関連項目See also