2016-12-29 10 views
0
private void checkTheCheckInterval(Func<in SqlConnection, in Random, in TextBox, out Boolean> myFunc) { 

} 

私はこのビルドエラーを取得:はどのように私は、この不正な分散修飾子エラーを修正するか?:

エラーCS1960:無効な分散修飾子。バリアントとして指定できるのは、インターフェースおよびデリゲート・タイプのパラメーターだけです。

すべてのカンマにエラーが表示されます。

+2

'ます。private void checkTheCheckInterval(機能 myFunc) '?パラメータではなく、C#*共分散*に関するすべての 'in'と' out'を削除するだけですか? –

+0

@DmitryBychenkoありがとう!あなたの答えを掲示して、私はそれを選ぶでしょう。 – nicomp

答えて

1

これは無効なC#です。分散モディファイアは、汎用代理人タイプまたはインターフェイスを宣言した場合にのみ使用できます。ここではデリゲートタイプFunc<in T1, in T2, in T3, out TResult>を使用します。

あなたがタイプを使用してSqlConnectionようジェネリック引数を指定、分散はFunc<...>によって宣言されているよう汎用パラメータT1 ... T3TResult用などRandom、あなたは、分散修飾子をspecifiyすることはできません

private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc) 
{ 
} 

これはタイプの宣言でありますは、(reference sourceから撮影):

ここ
public delegate TResult Func<in T1, in T2, in T3, out TResult>(T1 arg1, T2 arg2, T3 arg3); 

分散が宣言され、あなたは、あなたがFunc<>を使用するときにそれを変更する必要はありませんすることはできません。

0
あなたが3つの引数( SqlConnectionRandomTextBox)を取り、 Boolean値を返すラムダを渡したいようだ

private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc) { 

} 
関連する問題