如果我创建一个静态属性MyLanguage
并且一个请求将其值设置为1
,同时另一个线程将其设置为2
- 最终值是什么? MyLanguage
?
单个MyLanguge
属性是否在ASP.NET会话中共享?
答案 0 :(得分:8)
在应用程序域中共享静态属性/字段。因此,您的所有会话都应该看到相同的值。
唯一的例外是当您在静态字段上使用ThreadStatic属性时,在这种情况下,每个线程都会看到自己的值。例如
[ThreadStatic]
static int counter = 0; // each thread sees a different static counter.
答案 1 :(得分:2)
它将是2.静态字段,属性在对象之间共享。所以最新的设置值将是所有实例的更新。
来自MSDN
使用static修饰符声明一个静态成员,该成员属于类型本身而不是属于特定对象。 static修饰符可以与类,字段,方法,属性,运算符,事件和构造函数一起使用,但不能与索引器,析构函数或类以外的类型一起使用。有关更多信息
答案 2 :(得分:0)
静态对应用程序域是唯一的,该应用程序域的所有用户将为每个静态属性共享相同的值。
当你看到单词static时,请想“只会有一个这样的实例”。该实例持续多长时间是一个单独的问题,但简短的回答是它是可变的。
如果您想将特定于用户的值存储到Session State。