如何解决这个无效的方差修正错误?:

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

}

我得到这个生成错误:如何解决这个无效的方差修正错误?:

错误CS1960:无效的方差修改。只有接口和委托类型参数可以指定为变体。

该错误出现在所有逗号。

回答:

这是无效的C#。只有当您声明通用代理类型或接口时,才能使用差异修饰符。这里你使用委托类型Func<in T1, in T2, in T3, out TResult>

当你使用的类型,并指定像SqlConnection通用参数Random等为泛型参数T1 ... T3TResult,你不能specifiy方差改性剂,因为方差通过Func<...>声明

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<>去改变它。

回答:

看来你想传递一个lambda包含3个参数(SqlConnectionRandomTextBox),并返回Boolean值:

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

}

以上是 如何解决这个无效的方差修正错误?: 的全部内容, 来源链接: utcz.com/qa/257904.html

回到顶部