哪个是较轻的物体

时间:2009-09-11 17:46:00

标签: c# object

我在这里很困惑。哪个更轻的物体?是orgWithNullImageCollection或orgWithImageCollection?在下面的代码中。或者它是更轻的对象概念。请查看下面的代码段作为参考。


class Orgnization
{
    public Collection ImageCollection { get; set; }
}

Organization orgWithNullImageCollection = new Organization();
org.ImageCollection = null;


Collection imageCollection = new Collection();
// Adding 100 images to imageCollection

Organization orgWithImageCollection = new Organization();
org.ImageCollection = imageCollection;


如果我将这两个对象传递给任何其他方法,性能是否有任何差异?即在orgWithImageCollection上传递orgWithNullImageCollection?

我相信,组织对象的ImageCollection属性是否指向某事物没有任何区别。

请澄清。

1 个答案:

答案 0 :(得分:10)

您永远不会在C#中传递对象 - 只有值类型或引用的值。在这种情况下,当您处理类时,您将传递引用。无论引用的对象的内容(如果有),引用都将具有相同的大小(4或8个字节)。

在这种情况下,两个对象的大小都相同 - 只是其中一个对象具有空引用,而另一个对象具有对集合的引用。

因此,您可以将具有该集合的那个视为“较重”,因为它涉及两个对象而不是一个。显然,额外的集合将占用内存 - 而空引用不引用任何对象,因此只需要空引用本身的大小。

有关详细信息,请参阅有关value types and reference typesargument passing的文章。