객체 는 전혀 전달되지 않습니다. 기본적으로 인수는 평가되고 해당 값 은 호출하는 메서드 매개 변수의 초기 값으로 값별로 전달됩니다. 이제 중요한 점은 값이 참조 유형에 대한 참조-객체에 도달하는 방법 (또는 null)라는 것입니다. 해당 객체의 변경 사항은 발신자에게 표시됩니다. 그러나 다른 유형을 참조하도록 매개 변수 값을 변경하면 모든 유형 의 기본값 인 전달 값을 사용할 때 표시 되지 않습니다 .
당신이 통과하여 참조를 사용하려면 있어야 사용 out
하거나 ref
매개 변수 유형은 값 형식 또는 참조 형식인지. 이 경우 효과적으로 변수 자체가 참조로 전달되므로 매개 변수는 인수와 동일한 저장 위치를 사용하며 매개 변수 자체의 변경 사항은 호출자가 볼 수 있습니다.
그래서:
public void Foo(Image image)
{
// This change won't be seen by the caller: it's changing the value
// of the parameter.
image = Image.FromStream(...);
}
public void Foo(ref Image image)
{
// This change *will* be seen by the caller: it's changing the value
// of the parameter, but we're using pass by reference
image = Image.FromStream(...);
}
public void Foo(Image image)
{
// This change *will* be seen by the caller: it's changing the data
// within the object that the parameter value refers to.
image.RotateFlip(...);
}
나는 이것에 훨씬 더 많은 기사를 가지고있다 . 기본적으로 "참조로 전달"이 의미하는 바를 의미하지는 않습니다.