我一直在考虑我们在asp.net MVC中创建的视图模型对象的概念。我们的目的是实例化它并将其从控制器传递到视图并查看读取它并显示数据。
这些视图模型通常通过构造函数实例化。我们不需要初始化成员,我们可能不需要重新定义/覆盖无参数构造函数,我们不需要继承功能。
那么,为什么我们不将结构类型用于视图模型而不是类。它将提高性能。
答案 0 :(得分:16)
你认为“它会提升性能”,但你真的对此有所了解吗?在非常具体的情况下,结构的性能优于类。我推广简单,但主要是:
还有其他人,但这只是我的头脑。即便如此,我们谈论的往往是微不足道的性能提升。与微秒小写一样。
即使您可以保证您的视图模型不可变且很小,其他条件也不成立。假设每个请求有一个视图模型,您的Web服务器将不会每秒处理数百万个请求。此外,MVC框架在紧密循环中不能与这些一起使用,并且不包含针对此特定结构优化的代码路径。因此,MVC框架最终将对您的值类型执行大量的装箱/拆箱操作。
底线 - 不要对您的解决方案进行微观优化或过度设计。课程很好。在进行优化时,始终衡量以确保您将时间投入到有价值的冒险中。当有更大的鱼要炸时,不要为了琐事而烦恼。
答案 1 :(得分:0)
使用课程。一些视图模型需要构造函数,转换器和更多功能,为什么限制struct? (就像你有EF4对象而你需要用它们制作POCO ......)