c# - "Parameter passing to function"还是 "Assigning values to Properties and then using them in function"是更好的选择?

标签 c# oop

在设计一个类(在 C# 或任何 oop 语言中)时,我总是会困惑是否应该在类中定义属性并在类的方法中使用它,或者只使用方法参数就好。

我在第一种方式中发现的一个问题是它会产生依赖性(例如,如果调用者忘记将值分配给属性等怎么办......)。

例如我正在设计一个“myexcel”类,它可以“导出到 cvs”、“获取 XML”、“格式化 excel 并保存”

这里我应该将“ExcelPath”作为 myexcel 的属性还是应该将其作为参数传递给 GetXml 、 export 、 format 方法?

最佳答案

属性应该定义与对象关联的状态 - 限定一个实例与另一实例的状态信息。将对于单个函数调用有效的时间信息存储到对象状态中是没有意义的。换句话说,如果您将某些东西作为对象属性,因为它在某些方法中使用,那么只有在多个调用中使用相同的属性值或在多个方法中使用该属性时,它才有意义。

因此,在您的特定情况下,filePath 应该是所有保存/导出方法的参数,因为从使用角度来看,对象实例代表一些数据,而保存/导出只是序列化它的一种方法。文件路径仅对该调用有效 - 它可能会在多次调用时发生变化。

关于c# - "Parameter passing to function"还是 "Assigning values to Properties and then using them in function"是更好的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731816/

相关文章:

vb.net - 如何使类成员对于创建的每个实例都是唯一的?

oop - 框架如何影响应用程序的架构?

c# - 要求用户键入两个二进制值并执行按位异或运算符

c# - 以编程方式在加载的松散 xaml 文件中的控件上设置文本

C# 7.3 枚举约束 : Why can't I use the nullable enum?

java - 在绘图应用程序中分离模型和 View / Controller

php - 数据库中的值未显示

时间:2019-03-17 标签:c#ObservableCollection: How to implement CollectionChanged event

c# - 如何停止脚本?

php - 多个不相关接口(interface)的类型提示