我最近对Getters and Setters遇到了很多不同的看法,所以我想我应该把它变成自己的问题.
一个先前的问题我的收到的规定制定者不应该有任何的副作用立即发表评论(后来被删除),和SetProperty方法将是一个更好的选择.
实际上,这似乎也是微软的意见.但是,它们的属性通常会引发事件,例如设置Resized表单Width或Height属性时.OwenP还指出"你不应该让一个房产抛出异常,房产不应该有副作用,顺序应该无关紧要,房产应该相对快速地返回."
然而,Michael Stum声明在验证setter中的数据时应该抛出异常.如果你的setter没有抛出异常,你怎么能有效地验证数据,因为这个问题的许多答案都表明了这一点?
什么时候你需要举办一个活动,比如几乎所有的微软控制公司呢?那么你是不是受到任何订阅你的活动的怜悯?如果他们的处理程序执行大量信息,或者自己抛出错误,那么你的setter会发生什么?
最后,getter中的延迟加载怎么样?这也可能违反以前的准则.
放置在getter或setter中可以接受什么,以及只有accessor方法应该保留什么?
编辑:
来自MSDN中的另一篇文章:
这些
get和set方法通常与其他方法没有区别.它们可以执行任何程序逻辑,抛出异常,被覆盖,并使用编程语言允许的任何修饰符进行声明.但请注意,属性也可以是静态的.如果属性是静态的,那么get和set方法可以做什么有限制.有关详细信息,请参阅编程语言参考