![](/img/trans.png)
[英]Why do I get the following error? Invalid variance modifier. Only interface and delegate type parameters can be specified as variant
[英]How do I fix this Invalid variance modifier error?:
private void checkTheCheckInterval(Func<in SqlConnection, in Random, in TextBox, out Boolean> myFunc) {
}
我收到此構建錯誤:
錯誤CS1960:方差修飾符無效。 只能將接口和委托類型參數指定為變量。
該錯誤出現在所有逗號上。
這是無效的C#。 僅當您聲明通用委托類型或接口時才能使用方差修飾符。 在這里,您使用委托類型Func<in T1, in T2, in T3, out TResult>
。
當您使用類型並為通用參數 T1
... T3
和TResult
指定通用參數(如SqlConnection
, Random
等)時,您無法指定方差修飾符,因為方差由Func<...>
聲明Func<...>
private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc)
{
}
這是Func<...>
類型的聲明(取自參考源 ):
public delegate TResult Func<in T1, in T2, in T3, out TResult>(T1 arg1, T2 arg2, T3 arg3);
在此聲明了方差,使用Func<>
時,您不能也不需要更改它。
似乎您想傳遞一個帶3個參數( SqlConnection
, Random
和TextBox
)並返回Boolean
值的lambda:
private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.