무효 클릭 IP 추적 중...
c#

[c#] CallerMemberName 어트리뷰트란?

꼬예 2022. 6. 8.

 

Test2() 함수를 인자 없이 실행 시켜보았습니다.

 

 

output:

 

 

뭔가 이상하지 않나요?

 

Test2함수에는 인자로 name을 받도록 설정했는데, 함수 실행시 인자를 넣지도 않았습니다.

 

무엇보다 Main이라는 출력값은 어디서 나온걸까요?

 

이러한 특이한 상황은 CallerMemberName 어트리뷰트를 사용했기 때문입니다.

 

(어트리뷰트개념이 낯선 분들은 해당 포스팅을 참조하시기 바랍니다.)

 

CallerMemberName 어트리뷰트란?

1) 호출자명 인자 사용

CallerMemberName 어트리뷰트 덕분에, 자동으로 호출자(Caller) 이름(MemberName)을 인자로 사용하게 됩니다.

 

우리 예시에서 Test2함수의 호출자가 누구죠?

Main함수죠. 그렇기 때문에 Main이 출력된겁니다.

 

2) 디폴트 인자 세팅 필요

 

주의할점으로,

CallerMemberName 어트리뷰트를 사용할때는 반드시 디폴트 인자값을 설정 해주어야 합니다.

 

함수를 실행할때 아무것도 안넣는 것처럼 보여도 사실상 내부적으로 인자를 넣어주는 형태입니다.

그렇기 때문에 그 빈자리를 세팅해줘야 하는 것이죠.

 

3) 추가 예시

이해를 돕기 위해 몇가지 추가적인 예시를 통해 앞서 배운 개념을 단단히 해보겠습니다.

 

(1) 

 

 

이번에는 [CallerMemberName]가 설정된 함수 Test2의 호출자는 누구인가요?

Test3()입니다.

 

그렇기 때문에 출력값이 Test3이 됩니다.

 

output:

 

 

(2) 프러퍼티 호출자 출력

이러한 특징은 함수뿐만아니라 프러퍼티에도 똑같이 적용이 됩니다.

 

 

Test2 함수의 호출자가 프러퍼티입니다.

Main함수에서 해당 프러퍼티 값을 새로 지정함으로써 Test2()함수을 실행 시켰습니다.

 

그 결과 프러퍼티명인 Name이 출력 되는걸 확인할 수 있습니다.

output:

 

 

 

 

  • 트위터 공유하기
  • 페이스북 공유하기
  • 카카오톡 공유하기
이 컨텐츠가 마음에 드셨다면 커피 한잔(후원) ☕

댓글