728x90
Name 이라는 속성을 가진 Person 클래스가 있다고 가정한다
그리고 다음과 같이 ChangeName 메서드를 호출한 후 콘솔에 찍히는 Name 값은??
ChangeName(Person person)
{
Person newPerson = new Person();
newPerson.Name = "개명";
person = newPerson;
}
{
Person newPerson = new Person();
newPerson.Name = "개명";
person = newPerson;
}
.....
Person person = new Person();
person.Name = "본명";
ChangeName(person);
Console.WriteLine(person.Name); //Name 값은??
간단하지만 자칫 헷갈리기 쉬운 문제다.
그럼. 이 질문은 어떤가?
질문> 객체를 '참조에 의한 전달'로 해야 할 경우는 언제인가??
객체 자체는 참조타입으로 메서드 호출 시에도 그 참조가 전달된다. 그런데 명시적으로 참조로 전달해야 할 경우란 어떤 경우인가 하는 것이다.
사실 이 문제는 과거에 한번 정리했던 적이 있다.
중요한 멘트를 하나 남기고 싶어서 다시 끄적여 본다
"참조값 자체는 값에 의해 전달 된다"
좀 더 풀어서 적어보면, "참조 자체는 값에 의해 전달된다"
더 풀어보면 "참조에 의한 전달에서 참조 값 자체는 값에 의한 복사가 이뤄진다"
말 장난 같은 이 말은, 사실 혼돈을 정리하는 핵심 문구이다. ㅎㅎ
'.NET Framework' 카테고리의 다른 글
OAuth 2.0 Flow (0) | 2013.09.05 |
---|---|
Custom Configuration (6) | 2013.08.26 |
나에게 유용했던 닷넷 서적 (2) | 2013.07.04 |
WCF Service Reference Error(Cannot import wsdl:portType) (0) | 2013.07.03 |
IOC using Ninject (0) | 2013.06.18 |