将引用传递给链或使用公共静态变量更好

时间:2013-07-09 10:26:38

标签: c# xna

假设我们有一个游戏类。

游戏类需要传递对它的spritebatch的引用。也就是说,该类调用一个传递它的方法,然后该方法将它传递给其他方法,直到它最终被使用。

这对性能有害吗?使用静力学更好吗?

我发现静态的一个明显缺点是,无法在同一个应用程序中复制功能。

3 个答案:

答案 0 :(得分:1)

要回答你的问题并不容易,因为你没有特别提到要求,但一般来说我可以给你一些建议。

  1. 始终考虑封装:如果不在其他位置使用属性,请不要公开属性。
  2. 性能:对于引用类型,没有任何性能损失,因为它们已经是引用类型。但如果您的类型是值类型,那么将会有非常小的性能损失。< / LI>

    因此存在设计或性能权衡,除非您的方法被调用数百万次,否则您永远不必考虑公共静态属性。

答案 1 :(得分:1)

在所有内容中都有缺点 pros

从性能的角度来看,这是还是,取决于计算密集程度以及游戏中使用该代码的频率。

所以这是我对主题的考虑。

传递参数:

缺点:在堆栈上传递更多变量,将其推送到函数调用中。它非常快,但同样,它取决于如何您正在谈论的代码使用,所以没有它可以带来一些好处,这就是为什么插入这一点的缺点。

Pros :你明确地表明调用堆栈顶部的函数需要读取和/或写入的参数,因此查看该代码的人很容易想象语义你的电话的依赖性。

使用类似静态:

缺点:没有明确的证据(如果不是通过直接知识或良好的书面文件),哪些参数会或可能影响该函数内的微积分。

优点:您不会在堆栈中为链中的所有函数传递它。

我个人建议:像参数一样使用它,因为这清楚地表明了调用代码所依赖的内容和,即使存在一些可衡量的性能缺陷,很可能它与你的相关性不大案件。但同样,Rico Mariani总是建议:衡量衡量衡量 ......

答案 2 :(得分:0)

静力学大多不是最好的方式。因为如果以后你想制作多个实例,你可能会遇到麻烦。

当然,传递引用需要花费一些性能,但是根据实例的创建量,它或多或少会有所不同。除非您每隔少量时间创建数百万个对象,否则可能会出现问题。