View Code
1 public static class StringHelper 2 { 3 public static bool IsEmial(this string s) 4 { 5 return s.Contains("@"); 6 } 7 public static string HZ(this bool b) 8 { 9 return b?"真":"假"; 10 } 11 }
今天还是学委托和事件,我就个人理解来给说说委托和事件,委托和事件没有本质的联系。
委托是一个类型就像string ,class, emun但是它的作用又有点像多态定义的时候不知道要执行那个方法,
当被注册了哪个方法后才知道。它就像一个指针指向将来不知道的哪个方法。但是不同的是委托是约束方法的。如
public delegate void ValidationDelegate(ValidationEventArgs e);//ding yi wei tuo //委托方法 void UserName_Validation(ValidationEventArgs e) { if (e.value.Length<= 2) { e.IsValid = false; } } public class ValidationEventArgs { public string value { set; get; } public bool IsValid { set; get; } }
定义的委托方法必须是跟委托的方法参数类型,参数个数一致。调用的话就直接调用
先声明委托对象
public ValidationDelegate validation=UserName_Validation;
validation(e);调用委托
事件public Even ValidationDelegate validation;
声明委托类型的对象前加个Even就是事件
事件内部声明了一个私有的委托对象;
通过Add 和remove方法只能注册和去掉方法不能赋值防止委托对象为空和被黑客调用其他的方法
委托可以用匿名函数(就是就用一次不再用了,不用定义变量直接用)