TLDR摘要 :( a)我是否应该在可能在运行时产生多个对象的类中包含(冗长)方法代码,(b)这样做会导致内存使用膨胀,(c)如果是这样的话我应该将代码“外包”到一个只加载一次并让类方法调用它的类,或者(d)代码只用对象定义加载一次而且我什么都不担心?
........
我不知道这是否有一个很好的答案,但如果有的话我还没有通过在通常的地方搜索找到它。
在我的VB.Net(2010,如果重要的话)WinForms项目中,我在对象模型中有大约十几个类对象。其中一些非常简单,只是充当数据存储库。然而,对象模型中的那些方法具有越来越多的方法。可能会有大量更高级别的对象在使用,虽然确切的数字将取决于运行时,所以我不能更精确。
当我为其中一个顶级的方法代码编写时,我注意到它开始变得非常冗长。
考虑到普通PC目前有多少内存,内存优化是一种失落的艺术,但我不想让我的应用程序成为资源浪费。所以我的问题对于那些比我更了解.Net方式的人(其中会有很多)是:
是否将代码加载到内存中并创建了每个类的实例?
或者它只用类的定义加载一次,所有派生对象只引用那个定义? (我不确定这是怎么可能的,例如,事件处理程序可以动态分配,但不会有问题。)
如果对第一个答案是肯定的,那么将代码编写在一个“实用程序”对象中是否更有效率,该对象只加载一次并从真实类的方法中调用?
< / LI>任何想法都赞赏。
答案 0 :(得分:3)
使用更容易维护的代码库(更短的方法等)。对于任何复杂性越来越高的事情来说,这是更重要的成本。
如果出现问题,内存优化只是一个问题。当你有数百个类的数百个实例时,12个类真的没什么,那么它可能会成为一个问题。
答案 1 :(得分:2)
如果你有10个类的实例,那么属于该实例的变量都会占用自己的内存空间。因此,如果您有10个属性,变量等,这意味着您的内存中有100个(ish)项。至于你的代码,它只用你的程序集加载一次。如果您创建了10个类的实例,则代码在内存中的次数不会超过10次。