2012-09-02 5 views

답변

11

값으로 전송하면 런타임이 입력 문자열의 복제본을 생성하므로 느려질 수 있습니다.

귀하의 가정이 잘못되었습니다. String은 참조 형식입니다. 문자열 인수가있는 메서드를 호출하면 해당 참조가 값으로 복사됩니다. 복제가 필요 없습니다. 고정 크기입니다 - 사용중인 CLR에 따라 4 또는 8 바이트.

(값 유형이라 할지라도 기본적으로 다른 것에 대한 참조를 포함해야합니다. 가변 크기 값 유형을 스택에 직접 할당하는 것은 의미가 없습니다. 변수의 값을 더 짧거나 더 긴 문자열로 변경하면 어떻게 될까요?)

+0

따라서 'ref string a' 또는'string a'가 더 빠를 것입니다. ?? –

+2

@Geotarget : 아마'string a' 일 것입니다. 그러나 값 유형이 큰 극단적 인 경우 (예외는 거의 없음)를 제외하고는 성능에 기반하여 결정을 내려서는 안됩니다. 원하는 의미에 따라해야합니다. –

+0

큰 문자열을 전송한다고 가정 할 때, 다음은 무엇입니까? –

관련 문제