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