.NET属性值变更时set方法易被忽略的if判断
来源:互联网 发布:软件测试地位 编辑:程序博客网 时间:2024/06/07 18:21
BODY, P, TD { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 9pt }H2,H3,H4,H5 { color: #0000FF; font-weight: bold; }H2 { font-size: 13pt; }H3 { font-size: 12pt; }H4 { font-size: 10pt; color: black; }PRE { BACKGROUND-COLOR: #FBEDBB; FONT-FAMILY: "Courier New", Courier, mono; WHITE-SPACE: pre; }CODE { COLOR: #990000; FONT-FAMILY: "Courier New", Courier, mono; } (原创文章·转载请注明来源:http://blog.csdn.net/hulihui)名著《C#设计模式》第9章“观察者模式”涉及了标准的事件处理流程,作者在探讨属性值变更时给出一个如下示例代码(P73-74):
pulbic abstract class TpeakFunction在上述代码的set方法中,不管是否修改了当前的_tPeak值,都将引发Change事件(如果事件处理方法非空)。一般而言,只有修改了当前值才需要引发属性值变更通知事件。好的set方法编码习惯是:先判断值是否改变,即使没有事件通知调用。修改上述set方法如下:
{
private double _tPeak;
public event EventHandler Change;
....
public double Tpeak
{
get{ return _tPeak; }
set
{
_tPeak = value; // 直接给值
if(Change != null) // 非空调用事件处理方法
{
Change(this, EventArgs.Empty);
}
}
}
}
set效率上看,虽然增加了一个if判断,但事件处理或赋值语句的代价一般而言更高。另一个问题就是,创建对象时如何获得初始值的变更通知?一个解决方法是:在类的构造函数中调用Change()事件。
{
if(_tPeak != value) // 先判断值是否改变
{
_tPeak = value;
if(Change != null)
{
Change(this, EventArgs.Empty);
}
}
}
- .NET属性值变更时set方法易被忽略的if判断
- struts标签的if判断的几个实用方法 两个对象属性比较
- 重写属性的set方法
- 可能被你忽略的TextView属性
- UIScrollView被我忽略的一个属性
- 商标变更的方法
- XSLT <xsl:if> 元素 判断属性等于某个值
- 古怪的ios 属性set方法
- JS属性的get和set方法
- 跟踪model中属性(值)的变更
- dede 模板 if dedecms模板中运用dede标签时使用php和if判断语句的方法
- 属性 set ,get 方法
- Mybatis 实现不确定修改几个字段的修改方法(动态语句set、if实现),避免修改时其它没被修改的字段变为null
- mybatis if值的判断问题
- shell的if判断
- if语句的判断
- JSTL的if判断
- while/if的判断
- AspNetPager分页示例之DataGrid(PostBack分页)
- 指针移动任意字节数
- ssh框架下的第一个例程——(2)
- php soap实例(一)无wsdl模式
- 华为任正非:天天思考失败 让华为存活十年
- .NET属性值变更时set方法易被忽略的if判断
- Java的类装载器(Class Loader)和命名空间(NameSpace)
- 从一个datatable复制到另一个
- 利用Tomcat建立多个Web Server的方法
- jboss服务器 JAVA_HOME does not point to the JDK 异常处理
- Apache 2.2 + Tomcat 6.0 + MySQL 5.0 + mod_jk 整合(转载)
- 提高自己JAVA水平的十大技术讨论
- asp.net 页面中加入falsh
- 让文件类型的Input框内容变为只读/只能点击按钮选择