In C#, methods are only one kind of function
member, which also includes properties and
events (there are others too). Properties are
function members that encapsulate a piece of an object's state, such as a
button's color or a label's text. Events are function members that simplify
acting on object state changes.
그렇구나! 하고 탄성(?)을 지었다. 단지 메소드만 함수라는데 생각이 묶여 있었던 것이다.
프로퍼티와 이벤트도 함수이구나 하는데에 생각이 닿자 탄성이 나왔다. 왜 이벤트가 대부분 public으로 노출되고 있는지도 대한 오래된(?) 의문도 풀렸다.
프로퍼티와 이벤트도 호출하는 모습이 기존의 함수 호출과 조금 달라서 그렇지 하는 일은 함수 자체다. 그래도 프로퍼티까지는 익숙하진 않지만 함수라는 느낌을 가지고 사용해 왔으나 이벤트도 함수라는데 까지는 생각을 못했었다. 엄밀히 말하면 이벤트는 대리자의 특별한 형태로 함수라고 할 수는 없지만, 결과적으로 볼 때 대리자/이벤트가 하는 일이 지정한 함수(들)를 실행하는 것이므로 함수라고 불리워도 손색이 없는 것이다. 말하자면 어떤 사람을 지칭할 때, 이름을 부를수도 있지만 별명을 부를수도 있다. 이름이나 별명이나 같은 사람을 가리키는 것처럼.
이벤트는 먼저 이벤트를 가지는 클래스 안에서 필요한 일을 하는 함수를 연결하는 것이다. 기본이다.
그리고 클래스 밖으로 노출해 놓은 것은 외부에서도 이벤트에 따라 실행하고픈 함수를 연결하고자 함이다. 이는 클래스가 만들어질 때는 어떤 일이 일어날 지 알 수 없기 때문이다. 즉, 사용하는 쪽에서 필요한 이벤트에 적절한 함수를 연결시켜 놓으면 되는 것이다. 마치 메일링리스트에 등록하는 것처럼 받아들여도 될 듯하다. 메일링리스트를 이벤트로, 등록하는 주소를 핸들러로.
그렇다면 구독/발행 모델에 빗대어 생각할 수 있겠다. 이벤트에 핸들러를 등록하는 것은 이벤트 구독으로, 이벤트 발생에 따른 핸들러의 실행은 이벤트 발행 혹은 발행에 의한 연쇄반응 정도면 이해하기 괜찮을 것 같다.
여하튼 이벤트도 함수이다!!
그렇구나! 하고 탄성(?)을 지었다. 단지 메소드만 함수라는데 생각이 묶여 있었던 것이다.
프로퍼티와 이벤트도 함수이구나 하는데에 생각이 닿자 탄성이 나왔다. 왜 이벤트가 대부분 public으로 노출되고 있는지도 대한 오래된(?) 의문도 풀렸다.
프로퍼티와 이벤트도 호출하는 모습이 기존의 함수 호출과 조금 달라서 그렇지 하는 일은 함수 자체다. 그래도 프로퍼티까지는 익숙하진 않지만 함수라는 느낌을 가지고 사용해 왔으나 이벤트도 함수라는데 까지는 생각을 못했었다. 엄밀히 말하면 이벤트는 대리자의 특별한 형태로 함수라고 할 수는 없지만, 결과적으로 볼 때 대리자/이벤트가 하는 일이 지정한 함수(들)를 실행하는 것이므로 함수라고 불리워도 손색이 없는 것이다. 말하자면 어떤 사람을 지칭할 때, 이름을 부를수도 있지만 별명을 부를수도 있다. 이름이나 별명이나 같은 사람을 가리키는 것처럼.
이벤트는 먼저 이벤트를 가지는 클래스 안에서 필요한 일을 하는 함수를 연결하는 것이다. 기본이다.
그리고 클래스 밖으로 노출해 놓은 것은 외부에서도 이벤트에 따라 실행하고픈 함수를 연결하고자 함이다. 이는 클래스가 만들어질 때는 어떤 일이 일어날 지 알 수 없기 때문이다. 즉, 사용하는 쪽에서 필요한 이벤트에 적절한 함수를 연결시켜 놓으면 되는 것이다. 마치 메일링리스트에 등록하는 것처럼 받아들여도 될 듯하다. 메일링리스트를 이벤트로, 등록하는 주소를 핸들러로.
그렇다면 구독/발행 모델에 빗대어 생각할 수 있겠다. 이벤트에 핸들러를 등록하는 것은 이벤트 구독으로, 이벤트 발생에 따른 핸들러의 실행은 이벤트 발행 혹은 발행에 의한 연쇄반응 정도면 이해하기 괜찮을 것 같다.
여하튼 이벤트도 함수이다!!
반응형