如何解决这个无效的方差修正错误?:
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
... T3
和TResult
,你不能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个参数(SqlConnection
,Random
和TextBox
),并返回Boolean
值:
private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc) { }
以上是 如何解决这个无效的方差修正错误?: 的全部内容, 来源链接: utcz.com/qa/257904.html