重用一个对象

时间:2009-09-04 04:18:17

标签: c#

我想知道这是好事还是坏事?

SelectRecipientResponse user = SomeUtil.SelectRecipient(p.Email, p.ListID.ToString());
bool userIsInList = user.ExistsInList;
bool userIsOptedOut = user.IsOptedOut;

user = null;
user = SomeUtil.SelectRecipient(p.Email, _masterSuppressionListID);
bool userIsInSupressionList = user.ExistsInList;

所以我正在使用一个用户实例来检查它们是否在2个列表中。我正在检查的列表是通过第三方API。我想做一次检查,将该对象置空并再次重复使用。

这看起来很典型吗?我只是想巧妙地编码,所以想看看上面对这种技术的看法。

4 个答案:

答案 0 :(得分:6)

这很好,因为你没有重用该对象,你只是重用了保存对象引用的局部变量。

话虽如此,我个人觉得最好只是创建第二个变量来保存第二个引用,因为我发现它更具可读性。

答案 1 :(得分:4)

实际上,您使用相同的变量(即名称 user)来引用(在代码的不同区域中)到(可能)单独的实例< / {> SelectRecipientResponse,因为对SelectRecipient的每次调用都是(或可能是)返回一个不同的调用。这没什么大问题。在重新分配之前,无需将user明确设置为null

答案 2 :(得分:1)

当一些其他开发人员在一年内回来并开始与用户进一步合作时没有注意到你用第二个任务覆盖它时,你会遇到麻烦。为变量命名它是什么。这可能有资格作为不必要的过早优化。

答案 3 :(得分:0)

重新分配变量是完全可以接受的,尽管绝对没有合理的理由将null分配给变量,然后将其分配给其他变量。

就可读性而言,当我重新使用局部变量时,我通常不会在第一次声明中分配它。

我通常会写:

SqlParameter param;

param = new SqlParameter(...);
param.Value = "";

... // and again

param = new SqlParameter(...);
param.Value = "";

通过这种方式,很明显它被重新使用(或至少重新分配)。无论如何,对我而言,这意味着我可以愉快地重新订购(如果它变得相关)没有太多麻烦。