假如说有个
class X
{
public Func<string> Fn { get; set; }
}X x = new X();
x.Fn = () => someObj.StringProp;
那么给一个返回string的delegate赋值一个 ()=>对象.字符串属性。
我不太理解这种用法。难道不是x.Fn = ()=> { return someObj.String.Prop; }这样子吗?
class X
{
public Func<string> Fn { get; set; }
}X x = new X();
x.Fn = () => someObj.StringProp;
那么给一个返回string的delegate赋值一个 ()=>对象.字符串属性。
我不太理解这种用法。难道不是x.Fn = ()=> { return someObj.String.Prop; }这样子吗?
{
PasswordBox passwordBox = (PasswordBox)e.Field.Content;
this.registrationData.PasswordAccessor = () => passwordBox.Password;
}
registrationData对象的类里
internal Func<string> PasswordAccessor { get; set; }这样子。我不太理解这种用法。
x=>{return x+1;}
x => x+1
deleage(int x){return x+1;}
Func<int,bool> a = i=>(i & 1) == 1;
Func<object,string,int> 表示传入参数为object, string 返回值为int的委托
正解。
参考: static string abc() { return "ABC"; } public delegate string StrHandler();
private void button1_Click(object sender, EventArgs e)
{ X x = new X();
//1.lambda表达式
x.Fn = () => { return "abc"; };
MessageBox.Show(x.Fn.Invoke());
//2.委托
x.Fn = abc;
MessageBox.Show(x.Fn.Invoke());
//3.匿名委托
x.Fn = delegate() { return "123"; };
MessageBox.Show(x.Fn.Invoke());
}
把最后一个参数当返回类型,前面的参数当方法参数,就能确定该使用什么样的委托。