[c#] 배열 또는 목록이 기본적으로 C #에서 참조로 전달됩니까?

그들은 할? 아니면 프로그램 속도를 높이려면 참조로 전달해야합니까?



답변

참조 전달되는 .

.NET의 배열은 힙의 객체이므로 참조가 있습니다. 해당 참조는 값으로 전달됩니다. 즉 , 배열 의 내용 에 대한 변경 사항 은 호출자가 볼 수 있지만 배열을 다시 할당 하면 다음과 같이 표시되지 않습니다.

void Foo(int[] data) {
    data[0] = 1; // caller sees this
}
void Bar(int[] data) {
    data = new int[20]; // but not this
}

ref수정자를 추가하면 참조참조 로 전달 되고 호출자는 위의 변경 사항을 볼 수 있습니다.


답변

값으로 전달되지만 (ref도 out도 아닌 모든 매개 변수와 마찬가지로) 값 객체에 대한 참조이므로 효과적으로 참조로 전달됩니다.


답변

예, 기본적으로 C #에서 참조로 전달됩니다. C #의 모든 개체는 값 형식을 제외하고 있습니다. 좀 더 정확하게 말하면 “값별 참조”로 전달됩니다. 즉, 메서드에서 볼 수있는 변수의 값은 전달 된 원래 개체에 대한 참조입니다. 이것은 작은 의미 점이지만 때로는 중요 할 수 있습니다.


답변