5
函数可以修改参数吗
我们有一个包装Linq To SQL的数据层。在此数据层中,我们有此方法(简化) int InsertReport(Report report) { db.Reports.InsertOnSubmit(report); db.SubmitChanges(); return report.ID; } 在提交更改时,将使用数据库中的值更新报告ID,然后我们将其返回。 从主叫方看起来像这样(简化) var report = new Report(); DataLayer.InsertReport(report); // Do something with report.ID 查看代码,作为一种副作用,已经在InsertReport函数内部设置了ID,然后我们忽略了返回值。 我的问题是,我应该依靠副作用,而是做类似的事情。 void InsertReport(Report report) { db.Reports.InsertOnSubmit(report); db.SubmitChanges(); } 还是应该防止它 int InsertReport(Report report) { var newReport = report.Clone(); db.Reports.InsertOnSubmit(newReport); db.SubmitChanges(); return newReport.ID; } 甚至会 Report …