委托/事件与观察者模式
摘要:委托是一个类,它定义了一种方法类型,使得方法可以像其他普通类型一样作为参数被传递,但它与普通类型的区别是,可以将多个方法实例绑定到一个委托实例上,调用的时候,依次执行。委托带来的好处是,提升程序的可扩展性,解决if/else(或Switch)的问题。 用到委托的地方: 当涉及到针对某一相同的输入,需要根据情况去执行不同的逻辑或产生不同的输出时,通常会需要if/else或者switch来实现,可以考虑引入委托。 事件实际是委托的一个封装,当把一个委托定义为某个类的成员时,如果声明为public又恐暴露给客户端随意更改,违背了封装性,声明为private,又违背了给客户端使用的本意,故而采用和普.
阅读全文
posted @
2011-07-22 14:24
Be a Professional Programmer.
阅读(586)
推荐(0)
linq延迟加载的问题
摘要:使用Linq的时候常会遇到延迟加载带来的问题,比如2个表class(id,name),student(id,classId,name)当从数据层取到某个student对象后,想要取他对应的班级的名称,则会报上下文环境以被释放的错误!代码如下:数据层: public student getStudentById(int id) { using(DBDataContext dc = new DBDataContext()) { student st = dc.students.single(s=>s.id==id); return st; } } 上层使用getStudentById:stu
阅读全文
posted @
2009-07-02 18:00
Be a Professional Programmer.
阅读(573)
推荐(0)
CSharp的4种相等判断形式
摘要:C#语言中,对于变量相等的判断有4中形式,2个静态的object类的方法:ReferenceEquals(obj1,boj2)和Equals(obj1,obj2),还有实例方法Equals(),以及重载运算符号==。 (1)ReferenceEquals,看名字就知道比较的是2个变量的引用类型,所以很显然2个值类型永远都会返回false,就算是值类型变量自身相比,也返回false(涉及到装箱); (2)静态Equals,反编译dll可以看到Equals方法实际调用的是第一个变量的实例方法Equals,所以它的返回值取决于变量类型的Equals方法。 (3)实例Equals方法,默认比较的是“.
阅读全文
posted @
2009-06-23 01:00
Be a Professional Programmer.
阅读(1747)
推荐(0)