Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是将方法代码放在VB.Net数据存储类中,还是将其放在单独的类中?_Vb.net_Class_Optimization - Fatal编程技术网

是将方法代码放在VB.Net数据存储类中,还是将其放在单独的类中?

是将方法代码放在VB.Net数据存储类中,还是将其放在单独的类中?,vb.net,class,optimization,Vb.net,Class,Optimization,TLDR summary:(a)我是否应该在运行时可能产生多个对象的类中包含(冗长的)方法代码,(b)这样做是否会导致内存使用膨胀,(c)如果是这样,我是否应该将代码“外包”给只加载一次的类,并让类方法调用它,或者(d)不管怎样,代码是否只在对象定义中加载一次,而我什么都不担心 我不知道是否有一个好的答案,但如果有,我还没有找到它在通常的地方搜索 在我的VB.Net(如果有必要的话,2010年)WinForms项目中,我在一个对象模型中大约有十几个类对象。其中一些非常简单,只起到数据存储库的作

TLDR summary:(a)我是否应该在运行时可能产生多个对象的类中包含(冗长的)方法代码,(b)这样做是否会导致内存使用膨胀,(c)如果是这样,我是否应该将代码“外包”给只加载一次的类,并让类方法调用它,或者(d)不管怎样,代码是否只在对象定义中加载一次,而我什么都不担心

我不知道是否有一个好的答案,但如果有,我还没有找到它在通常的地方搜索

在我的VB.Net(如果有必要的话,2010年)WinForms项目中,我在一个对象模型中大约有十几个类对象。其中一些非常简单,只起到数据存储库的作用。然而,在对象模型的后面,有越来越多的方法。可能会有大量的更高级别的对象在使用,虽然确切的数量将取决于运行时,所以我不能比这更精确

当我为其中一个顶级方法编写方法代码时,我注意到它开始变得相当冗长

内存优化是一门失传的艺术,考虑到如今普通PC的内存量,但我不想让我的应用程序成为一个资源消耗者。因此,对于比我更了解.Net的人(其中会有很多人),我的问题是:

  • 代码是否与创建的类的每个实例一起加载到内存中

  • 或者,是否只加载一次类的定义,而所有派生对象都只引用该定义?(举例来说,如果可以动态地分配事件处理程序,但这样做并没有什么坏处,我真的不确定这怎么可能。)

  • 如果第一个问题的答案是肯定的,那么在只加载一次并从实际类的方法调用的“实用程序”对象中编写代码会更有效吗


任何想法都值得赞赏。

简短的回答,没关系。数据存储在内存中,但代码只加载一次

编辑:我想我需要一个更长的答案


如果一个类有10个实例,那么作为该实例一部分的变量都会占用它们自己的内存空间。因此,如果你有10个属性、变量等,这意味着你的内存中有100个(ish)项。至于你的代码,你的程序集只加载了一次。如果您创建了10个类实例,那么您的代码不会在内存中出现10次。

请选择更易于维护的代码库(较短的方法等)。对于任何日益复杂的事物来说,这是更重要的成本


内存优化只是一个问题,如果它是一个问题。12个类其实什么都不是,如果你有数百个类的数百个实例,那么它可能会成为一个问题。

感谢你花时间来解决这个问题。出于好奇,你有没有发现任何关于这方面的文件?在发布问题之前的搜索中,我遇到了一些特定的主题,比如垃圾收集对内存消耗的影响,但没有任何关于对象内存处理的一般文档。从这里的回答来看,这更像是一个好奇的问题。感谢您的回复。至于变量的内存分配,您可以查看每个数据类型消耗了多少内存。至于代码,我只是在编程了这么长时间后才知道的,但我不知道在哪里可以找到关于它的文章。很难找到那个,告诉我吧。你遇到的问题越具体,就越容易找到参考资料。越是通用,就越难找到,因为材料内容在使用相同关键字搜索词的事物的“噪音”中丢失,但与您要查找的内容无关。我将把这个标记为答案。StingyJack的观点是好的和相关的,但这一点解决了我所问的具体问题。再次感谢两位。都很好,吝啬鬼杰克。当我知道系统在引擎盖下运行时,我可能会感觉更舒服一些。在早期的应用程序中,我多次遇到理论上应该有效,但在实践中并不总是有效的东西,所以我认为这个问题值得一提。但在复杂性问题上,你已经死定了。