我在这里很困惑。哪个更轻的物体?是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属性是否指向某事物没有任何区别。
请澄清。
答案 0 :(得分:10)
您永远不会在C#中传递对象 - 只有值类型或引用的值。在这种情况下,当您处理类时,您将传递引用。无论引用的对象的内容(如果有),引用都将具有相同的大小(4或8个字节)。
在这种情况下,两个对象的大小都相同 - 只是其中一个对象具有空引用,而另一个对象具有对集合的引用。
因此,您可以将具有该集合的那个视为“较重”,因为它涉及两个对象而不是一个。显然,额外的集合将占用内存 - 而空引用不引用任何对象,因此只需要空引用本身的大小。
有关详细信息,请参阅有关value types and reference types和argument passing的文章。