2009-09-11 10 views
1

Je suis confus ici. Quel est l'objet le plus léger? est orgWithNullImageCollection ou orgWithImageCollection? dans le code ci-dessous. Ou est-ce un concept d'objet plus léger du tout. Veuillez trouver l'extrait de code ci-dessous pour la référence.Qui est un objet plus léger

 

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; 

 

Y a-t-il une différence de performance si je passe ces deux objets à d'autres méthodes? ie en passant orgWithNullImageCollection sur orgWithImageCollection?

Je crois que cela ne fera aucune différence que la propriété ImageCollection des objets Organization pointe vers quelque chose ou non.

Veuillez clarifier.

Répondre

10

Vous ne passez jamais objets en C# - valeurs uniquement valables pour les types de valeurs ou les références. Dans ce cas, vous transmettez une référence lorsque vous traitez avec une classe. La référence sera de la même taille (4 ou 8 octets) quel que soit le contenu de l'objet auquel elle fait référence (le cas échéant).

Dans ce cas, les deux objets seront de la même taille - c'est juste que l'un d'eux aura une référence nulle où l'autre a une référence à une collection. En tant que tel, vous pourriez considérer celui avec la collection comme "plus lourd" en ce que deux objets sont impliqués au lieu d'un. La collection supplémentaire prendra de la mémoire, évidemment - alors qu'une référence nulle ne fait référence à aucun objet, donc seule la taille de la référence nulle elle-même est requise. Pour plus d'informations, voir mon article sur value types and reference types et argument passing.

Questions connexes