从另一个角度来看,也许帮助的方法是解释.net中的“静态”。
这里有一个简单的类:
public class MyClass
{
public string Zeus;
public static string Hades;
}
好了,这是什么“静态”的意思是我们的阎王字符串?静态基本上意味着:它只存在于一个地方 - 无论你制作多少个实例,只有一个Hades字符串。
MyClass first = new MyClass();
MyClass second = new MyClass();
MyClass third = new MyClass();
......现在有三个宙斯琴弦。一个为每个MyClasses的:
first.Zeus = "first";
second.Zeus = "second";
third.Zeus = "third";
...但只有一个阎王:
MyClass.Hades = "only version";
通知我怎么没把 'first.Hades',或 'second.Hades'?那是因为,因为只有一个版本,所以我不必通过实例来实现它。事实上,VisualStudio会告诉你,“我不能这样做 - 你试图获得一个静态变量,但你试图通过一个实际的类实例来实现它。”
相反,您只需使用:MyClass.Hades。
那么,回到你的记忆问题?
public class MyClass
{
public List<string> Zeus;
public static List<string> Hades;
}
的方式这些名单真的保存没有任何不同。唯一不同的是,你将永远有一个你的静态哈迪斯变量列表...并且你将拥有作为你创建的每个MyClass的宙斯列表(未被垃圾收集)
有意义?将这个概念放下是非常重要的,因为它可以用来缓存或者拥有一个Singleton全局对象等lot。
静态实际上是相同的内存区(地址)没有必要它是我猜的数量。 – MadOX
谁说静态字段有固定的内存分配? –
静态或非静态与内存管理将如何表现无关。静态只是一个非常渴望的生活对象,将被视为这样。 “静态”是一个误称,因此具有误导性,对此它没有任何静态的东西; 'static'确实意味着[“与类型相关联,而不是任何类型的实例”](https://stackoverflow.com/a/9410742/767890)。 – InBetween