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

Man*_*kar 3 .net c#

一个空字符串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字段仍将引用它,因此它不会被垃圾收集.)


Joe*_*oey 6

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

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