一个空字符串null占用多少内存?
我发现了这个问题,它讲述了String.Empty内存分配,但没有null.
如果我想存储一个空字符串或null在会话中哪个会占用更少的空间?
class MyClass
{
public string One { get; set; }
public string Two { get; set; }
public MyClass(string one,string two)
{
One = one;
Two = two;
}
}
class Main
{
var emp = new MyClass(String.Empty, String.Empty);
var nul = new MyClass(null,null);
}
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 11
在内部MyClass,绝对没有区别.两者都是"引用的大小" - 4个字节或8个字节.如果值引用任何其他字符串,它也将占用相同的空间量.
当然,空字符串对象会占用空间,但它会占用相同数量的空间,但是它有很多其他引用.(换句话说,无论你是否引用它都不会对内存产生任何影响...... string.Empty字段仍将引用它,因此它不会被垃圾收集.)
我想,两者都是一样的.一个是空引用(即可能保留一些魔术内部引用值null),一个是对类中静态字段的引用.我怀疑他们在记忆方面会有所不同.注意:这是猜测,而不是知识,但无论实际答案是什么,我怀疑你会看到很大的差异.如果那么多的话,期望它们在几个字节的范围内.
无论如何,你为什么要担心这个而不是用你的时间来解决实际的,有趣的或重要的问题?