Tom*_*ski 35 c# oop methods properties class
可能重复:
属性与方法
在方法中,您也可以在属性中键入一些代码.例如,我有一个属性名称.当类名更改时,我想从数据库中获取一些数据并更改对象的状态.我可以添加此代码来设置我的属性的一部分.其他解决方案是将set part更改为private并添加名为SetName的方法,并在此方法中添加我的代码.
那么区别是什么呢?什么时候把一些代码放到getter/setter并且何时创建自己的方法来改变我的属性和我的类的其他部分是不合适的?
Chr*_*nce 54
这里有一套关于何时使用Bill Wagner的属性vs方法的指南(固定链接)
重复调用setter(具有相同的值)应该与单个调用没有任何区别.
get不应返回对内部数据结构的引用(参见第23项).方法可以返回深层副本,并可以避免此问题.
pli*_*nth 12
鉴于这样的财产
private string _name;
public string Name { get { return _name; } set { _name = value; } }
Run Code Online (Sandbox Code Playgroud)
可以编写以下两种方法:
public string get_Name() { return _name; }
public void set_Name(string value) { _name = value; }
Run Code Online (Sandbox Code Playgroud)
行为相同.事实上,这正是编译器在创建属性时为您所做的事情.
一般来说,当它内部的代码开始感觉"昂贵"时,我会远离属性,如果这有意义的话.我希望属性感觉像字段(在特定时间发生受控的副作用),因此它们应该是轻量级的.
财产只不过是一些语法糖.在某些情况下,最好定义属性而不是方法,因为它更清晰/更易读.
设计指南指出,当您实现的功能很昂贵时,应该优先考虑某个属性.
实际上,一个属性被实现为一种或两种方法; 取决于您的财产是否有安装者.该属性被转换为get_xxx和set_xxx方法.
归档时间: |
|
查看次数: |
24147 次 |
最近记录: |