2009-09-11 3 views
1

여기에 혼란 스러워요. 누가 더 가벼운 물건입니까? 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 속성이 무언가를 가리키고 있는지 여부는 아무런 차이가 없다고 생각합니다.

명확히하십시오.

답변

10

개체은 C#에서 절대 전달하지 않습니다. - 값 유형 또는 참조의 값만. 이 경우 클래스를 다루는 동안 참조를 전달하게됩니다. 참조되는 객체의 내용에 관계없이 참조 크기는 동일합니다 (4 또는 8 바이트).

이 경우 두 개체가 같은 크기가됩니다. 다른 개체가 컬렉션에 대한 참조를 가지고있는 경우 둘 중 하나에 null 참조가 있습니다.

이와 같이 하나가 아닌 두 개의 객체가 컬렉션에있는 객체를 "무겁게"간주 할 수 있습니다. 여분의 콜렉션은 분명히 메모리를 차지할 것이다. 반면 null 참조는 어떤 객체도 참조하지 않으므로 null 참조 자체의 크기 만 필요하다.

자세한 내용은 value types and reference typesargument passing에 대한 내 기사를 참조하십시오.