我在OOP中很新,但是必须开发一个大项目...仅仅是为了想象,下面的两个例子返回相同的.
哪一个(更)正确,嗯或更干净?财产还是方法?实际上我必须从连接表中返回复杂的数据集...我避免复制返回数据集的complet查询.这就是为什么在这个例子中它只是一个空的.
谢谢.
public class House
{
public static DataSet Windows
{
// just for imaging
get
{
DataSet ds = new DataSet(); // Here would be my data set from sql which returns a windows collection.
return ds;
}
set
{
Windows = value;
}
}
public static DataSet GetWindows()
{
DataSet ds = new DataSet(); // Gets same right?
return ds;
}
}
Run Code Online (Sandbox Code Playgroud)
该属性肯定是不正确的 - setter将抛出一个StackOverflowException,因为它只是递归.
即使吸气很奇怪,但 - 性能一般可以反映财产或类型的某些方面,而不仅仅是创建一个新对象,并忘记它.
就我个人而言:
public static DataSet CreateWindows()
{
return new DataSet();
}
Run Code Online (Sandbox Code Playgroud)
这给人的印象正确,它的创造新的东西- GetWindows将意味着缓存,或该数据集是该类型的静态状态的一部分.
如果有一种可能性,即在以后的日子你会想要做它做缓存,然后GetWindows是合理的-但我会再记录,这可能会或可能不会创建一个新的结果每次.
C#中的属性转换为get/set方法,因此从技术上讲它们是等效的.但是,框架指南建议应将属性用于"简单"操作,如字段访问.因此,在你的例子我会使用的方法GetWindows方法,因为它暗示消费者,它可能是一个长期运行的呼叫.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |