private void checkTheCheckInterval(Func<in SqlConnection, in Random, in TextBox, out Boolean> myFunc) {
}
我得到這個生成錯誤:如何解決這個無效的方差修正錯誤?:
錯誤CS1960:無效的方差修改。只有接口和委託類型參數可以指定爲變體。
該錯誤出現在所有逗號。
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) {
}
'私人無效checkTheCheckInterval(Func鍵 myFunc的)'?只是刪除所有關於C#*協方差*的'in'和'out',而不是參數? –
@DmitryBychenko謝謝!發佈你的答案,我會選擇它。 – nicomp