FragRecordSongList FragRecordSongList = new FragRecordSongList();
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.addToBackStack(FragRecordSongList.class.getName());
ft.replace(R.id.fragContainer, FragRecordSongList, FragRecordSongList.class.getName());
ft.commit();
我收到了这个构建错误:
错误CS1960:无效的方差修饰符。只能将接口和委托类型参数指定为变体。
错误出现在所有逗号上。
答案 0 :(得分:1)
这不是有效的C#。只有在声明通用委托类型或接口时,才能使用差异修饰符。在这里,您使用委托类型Func<in T1, in T2, in T3, out TResult>
。
使用类型并指定泛型参数,如SqlConnection
,Random
等泛型参数 T1
... T3
和TResult
,您无法指定方差修饰符,因为方差由Func<...>
声明
private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc)
{
}
这是Func<...>
类型的声明(取自reference source):
public delegate TResult Func<in T1, in T2, in T3, out TResult>(T1 arg1, T2 arg2, T3 arg3);
此处声明方差,当您使用Func<>
时,您不能也不需要更改它。
答案 1 :(得分:0)
似乎你想传递一个带有3个参数的lambda(SqlConnection
,Random
和TextBox
)并返回Boolean
值:
private void checkTheCheckInterval(Func<SqlConnection, Random, TextBox, Boolean> myFunc) {
}