간단한 C# 문법 Quiz

Posted in .NET Framework // Posted at 2013.07.11 16:16

Name 이라는 속성을 가진 Person 클래스가 있다고 가정한다

 

그리고 다음과 같이 ChangeName 메서드를 호출한 후 콘솔에 찍히는 Name 값은??

ChangeName(Person person)
{
        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  (5) 2013.08.26
간단한 C# 문법 Quiz  (1) 2013.07.11
나에게 유용했던 닷넷 서적  (2) 2013.07.04
WCF Service Reference Error(Cannot import wsdl:portType)  (0) 2013.07.03
IOC using Ninject  (0) 2013.06.18