【问题标题】:how efficient is Object type in vb.net?vb.net 中的对象类型的效率如何?
【发布时间】:2013-11-26 23:04:12
【问题描述】:
我在字典中有动态项目属性,可以包含单个或字符串或 2 个其他自定义类。
现在我将值存储在一个类中,该类具有所有这些的未初始化变量和另一个变量来说明根据请求获取哪种类型。我不喜欢它,因为它相当笨重并且似乎浪费内存(因为大多数时候存储的值是单个的)。
我想我可以在单个对象变量类型中保存这些中的任何一个,但我不知道会受到什么样的惩罚(如果有的话)。我应该继续自己管理类型还是让 vb 解决?
【问题讨论】:
标签:
vb.net
object
memory-management
types
【解决方案1】:
使用 VB.NET 中的 Object 类型,您应该担心的主要问题是后期绑定。如果您在 Object 变量上调用方法(除了属于 Object 类型的那些方法,例如 ToString),vb 运行时必须使用反射在执行时查找并调用确切类型的正确方法.如果您对变量使用特定类型,则当您的代码是 JIT 编译时,该查找只会发生一次。我会说后期绑定的开销非常大,您应该尽可能避免它。
但是,这不适用于检查对象的类型并分配给具有更具体类型的变量。因此,如果您在调用方法之前弄清楚您拥有什么类型的对象并将其分配给正确类型的变量,那么您应该没问题。这样做会产生一些开销,但它可能不会比你已经在做的更糟。
避免后期绑定的另一个原因是它会阻止编译器进行类型检查。