C#:在对象中使用未使用的变量的开销

CJ7*_*CJ7 1 c# oop

使用C#,是否有一个较大的对象包含大量的字符串变量 - 其中一半从未在同一个实例中使用,而不是2个对象包含一半的字符串变量,其中所有变量将用于所有的情况?

我的问题可能实际上是:在对象中有大量空字符串变量会有什么开销?我在谈论20个未使用的字符串变量.

Jon*_*eet 6

20个未使用的字符串变量可能会浪费每个实例80或160个字节,具体取决于您使用的是32位还是64位CLR.每个字段的值将是一个引用,这就是它取决于CLR的原因.(由于填充可能会有更多的浪费;这取决于对象的细节.)

这是否重要取决于你使用这些对象的程度 - 显然你占用的空间越多,垃圾收集器就越难以工作,你的应用程序将占用更多的内存.如果你有一百万个这些物体在任何一个点"活着",它们将浪费大约80或160MB.这有意义吗?这取决于你的情况.

  • @Kamarey:那是关于字符串的*实例*.未使用的字符串变量通常包含空引用,而不是对新创建但空字符串的引用.(我不知道你是不是在开玩笑,但是你知道我写了那篇文章,对吧?) (2认同)