哪个标识符变量最好作为参数传递给方法?

时间:2011-03-18 16:42:46

标签: c# variables properties argument-passing

假设以下方法:

public void ShareClassStuff(int shareClassId)
{
    var shareClass = _shareClassService.GetShareClassById(shareClassId);

    (if shareClass != null)
        var shareClassStat = _shareClassService.GetShareClassStat(shareClass.Id);

    //go on to do stuff with shareClass & shareClassStat 
}

在这里,我通过将shareClassId传递给返回我需要的对象的服务来获得shareClass。接下来,我必须将Id传递给另一个方法来获取一些不同的数据。

我的问题是,在第二次服务电话中,最好是使用shareClassId变量,例如

GetShareClassStat(shareClassId)

或shareClass对象的Id属性,例如

GetShareClassStat(shareClass.Id)

还是甚至重要?

4 个答案:

答案 0 :(得分:0)

我认为这不重要。

答案 1 :(得分:0)

虽然人们可能会双向争论,但传递shareClassId的好处非常小:

shareClass.Id是一个属性,因此是方法调用(可能会也可能不会通过优化内联)。 shareClassId是一个简单的整数。

因此传递参数有一个非常小的优势。

<强>更新

另一个原因是人们可能更喜欢使用这个参数:它是一致的。您使用了第一个“按ID查找”的参数,因此第二次再次使用该参数。

这些原因都不是非常引人注目,但既然你问过,我认为你对任何可以想象的推理感兴趣。

答案 2 :(得分:0)

无所谓。如果由于某种原因你的GetShareClassById()方法停止返回空值而是开始返回一个空类,那么以后才有意义。现在你有一个ID无效的类。并不是说它会发生,只是说它会引起问题。

如果你关心速度增加0.0001秒,那么传递变量。

答案 3 :(得分:0)

我认为从性能角度来看并不重要,但是,我会将shareClassId传递给第二个方法,而不是shareClass.Id。

原因是当您使用shareClass.Id时,您现在依赖于代码的定位。必须在_shareClassService.GetShareClassStat之前首先调用_shareClassService.GetShareClassById。此外,您还引入了对_shareClassService.GetShareClassById实现的依赖,以正确填充Id属性。