private void btnTest_Click(object sender, EventArgs e)
{
//Func<Employee, int> getId = (x => x.EmployeeId);
Func<TextBox, string> getInput = (x => x.Text);
txtName.Text = GetInput(getInput);
}
private string GetInput<T>(Func<T, string> getInput)
{
string s = getInput(this.txtName.Text);
return "Hello "+s;
}
在“字符串s = getInput(this.txtName.Text);”处 我遇到的错误是“代理'System.Func'有一些无效的参数”...。这是什么问题...有人可以帮助我。
由于声明了Func<T, string> getInput
,因此遇到了编译时错误,但尝试将a传递string
给它。
从https://msdn.microsoft.com/zh-cn/library/bb549151%28v=vs.110%29.aspx:
public delegate TResult Func<in T, out TResult>( T arg )
您已声明getInput
是带有T
参数的函数,但您正在尝试将其传递给string
。
在Func<T, string> getInput
概念上可被表示为:
string getInput(T parameter)
我相信您可能打算做这样的事情:
private string GetInput(Func<TextBox, string> getInput)
{
return String.Format("Hello {0}", getInput(this.txtName));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句