静态只读字段在内存中只有一个副本,无论其封装类型有多少个对象存在?
例如:
class A{
static readonly SomeType foo;
static A(){
foo = new SomeType();
}
...
foo
在整个程序中只存在一次,无论A
有多少个实例?
答案 0 :(得分:3)
来自ECMA-335(强调我的)
I.8.4.3静态字段和静态方法
类型 能够 声明与该类型相关联的位置,而不是任何特定值 类型。这样的位置是 静态字段 这种类型。因此,静态字段声明了一个位置 是由所有类型的值共享。就像非静态(实例)字段一样,输入静态字段 那种类型永远不会改变静态字段始终限于单个应用程序域 (见§ I.12.5 ),但它们也可以基于每个线程分配。
ThreadStaticAttribute允许基于每个线程进行静态分配。
对于大多数常见用途,您的代码段中只会有一个SomeType
foo
被[ThreadStatic]
引用的实例。
如果您涉及多个应用程序域,或使用success: function (file, response) {
this.removeFile(file);
}
进行装饰,则可能存在多个实例。