string.Empty和null需要多少空间?

时间:2011-07-06 18:49:46

标签: c# .net

空字符串和null占用多少内存?

我找到了this question,它告诉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);
    }

4 个答案:

答案 0 :(得分:11)

MyClass内,绝对没有区别。两者都是“引用的大小” - 4个字节或8个字节。如果值引用任何其他字符串,它也将占用相同的空间量。

当然空字符串 object 会占用空间,但它会占用相同数量的空间,但是它有很多其他引用。 (换句话说,是否引用它对内存没有任何影响...... string.Empty字段仍将引用它,所以它不像它可能是垃圾收集。)

答案 1 :(得分:6)

我想,两者都是一样的。一个是空引用(即可能为null保留一些魔术内部引用值),一个是对类中静态字段的引用。我怀疑他们在记忆方面会有所不同。注意:这是猜测,而不是知识,但无论实际答案是什么,我怀疑你会看到很大的差异。如果那么多的话,期望它们在几个字节的范围内。

无论如何,你为什么要担心这个而不是用你的时间来解决实际的,有趣的或重要的问题?

答案 2 :(得分:0)

如果你想做一些像释放字符串使用空间的东西,并且选择哪一个并不重要,请使用null。它可以节省内存,可能(虽然自String.Empty汇集后可疑),但这并不重要。 null是正确的。

答案 3 :(得分:0)

如果您希望数据字面上没有任何内容,请使用null。如果你真的希望字符串为空(即如果你想稍后操作那个空字符串),请使用string.empty。记忆不应该是这里的问题。