2

如果我创建一个静态属性MyLanguage并且一个请求将其值设置为1,同时另一个线程将其设置为2- 的最终值是MyLanguage多少?

单个MyLanguge属性是否在 ASP.NET 会话之间共享?

4

3 回答 3

8

静态属性/字段在应用程序域中共享。因此,您的所有会话都应该看到相同的值

唯一的例外是当您在静态字段上使用ThreadStatic属性时,在这种情况下,每个线程都会看到自己的值。例如

[ThreadStatic]
static int counter = 0; // each thread sees a different static counter.
于 2013-07-26T06:30:40.413 回答
2

它将是 2。静态字段、属性在对象之间共享。因此,最新的设置值将更新所有实例。

来自 MSDN

使用 static 修饰符声明一个静态成员,该成员属于类型本身而不是特定对象。static 修饰符可以与类、字段、方法、属性、运算符、事件和构造函数一起使用,但不能与索引器、析构函数或类以外的类型一起使用。了解更多信息

于 2013-07-26T06:27:01.217 回答
0

静态对于应用程序域是唯一的,该应用程序域的所有用户将共享每个静态属性的相同值。

当您看到静态一词时,请想“只有一个实例”。该实例持续多长时间是一个单独的问题,但简短的回答是它是可变的。

如果要存储特定于用户的值,请查看Session State

于 2013-07-26T06:29:07.783 回答