我知道实例变量不是线程安全的,因为它们存储在堆上。我正在重构ASP.NET单线程应用程序中的代码,我正在尝试更多地使用实例变量。
我的问题是:开发人员是否因为可能存在多线程问题而避免使用实例变量? (即使应用程序不是多线程的,现在可能是将来)。我记得读过应该使用实例变量来改进使用组合和聚合而不是关联的设计(与局部变量一样)。
是否有任何标准可以帮助开发人员决定何时使用实例变量以及何时使用局部变量。我用谷歌搜索了这个,我查看了MSDN,但我没有找到答案来解决我的具体问题。
答案 0 :(得分:0)
您实际上指的是静态变量。静态变量不是线程安全的(通常,除非您编写代码以同步对变量的适当访问)。相反,实例变量,在asp.net中是线程安全的,因为每个请求线程都将在自己的副本上运行。
static 变量用于存储需要在所有请求之间共享的数据。如果您没有这种情况,则不需要使用静态变量。如果你这样做,那么已经提供了类,例如Cache
类。