C#/C#정리

    [C#] 인터페이스와 상속

    인터페이스 간단하게 계약(contract)라고 정의되며 구현 없이 메소드 선언만 포함된 클래스 문법과 비슷한 면이 있다. 관례적으로 인터페이스 이름에는 I접두사를 붙인다. 인터페이스를 추상메소드만 0개 이상 담고 있는 추상 클래스라 생각해도 무방하다. 인터페이스의 특징 선언은 있고 정의는 없다 다중 인터페이스가 가능하다. 인터페이스의 메소드를 자식 클래스에 구현할 떄는 반드시 public 접근 제한자를 명시해야한다. 인터페이스에는 프로퍼티도 넣을 수 있다. 그럼 왜 인터페이스를 쓸까? 인터페이스에 속한 메소드는 모두 가상 메소드에 속한다. 이미 가상 메소드기 때문에 virtual,override 예약어를 지정하지 못하게한다. → 굳이 지정할 필요가 없기 때문이다. 상속은 한개 밖에 하지못하지만 인터페이스..

    [C#] 익명메소드와 람다식

    익명 메서드 말 그대로 이름이 없는 메서드. 그래서 무명 메서드라고 부르기도한다. 익명 메서드의 기본구조 delegate(매개변수) { // 메서드의 내용 }; 장점 단순히 델리게이트로 전달될 용도의 메서드라면 굳이 따로 정의하지 않고 익명 메서드를 활용하는것이 훨씬 간단한 코드를 만들 수 있다. 익명 메서드 미사용 예제 Add 메서드를 만들어서 사용해준다. delegate int myDelegate(int a, int b); void Main() { myDelegate del = Add; Debug.Log(del(1,3)); } int Add(int a, int b) { return a + b; } 익명 메서드 사용 예제 Add 메서드없이 바로 전달해 사용한다. public class Anonymous..

    [C#] Event - Delegate를 사용한 이벤트 처리

    🌳 Event 델리게이트를 이용한 콜백을 좀 더 기능적으로 만들어주는 키워드다. 이벤트에서는 델리게이트 콜백에서 델리게이트 변수를 넘겨주었던 과정까지 생략할 수 있다. 이벤트를 이해하려면 이벤트를 발생시키는 쪽과 발생한 이벤트에 반응하는 쪽을 나눠 생각할 수 있어야한다. 이벤트를 발생시키는 클래스 : Publisher 이벤트를 반응하는 클래스 : Subscriber 🌳 Event 사용이유 자식에서 부모의 메소드를 사용하는것은 매우 어려운 작업이다 아주 가부장적인 C#이다 그래서 이벤트를 통해 어디선가 작업된 내용을 쏘고 이벤트 구독을 통해 받는다. 이벤트는 구독자가 아주 많을 때 굉장히 유용하다. 이벤트 발생 후 구독자의 메서드를 일일이 호출해야 하는 것이 아니라, 각각의 구독자는 이 이벤트가 발생하는지..

    [C#] Callback - 콜백은 어떻게 사용하는가?

    🌳 Callback 델리게이트의 진가가 발휘되는 시점은 바로 콜백 기능을 이용할 때다. 콜백이란 호출을 당한 쪽에서 다시 호출한 쪽의 메서드를 호출하는 것이다. 🌳 일반적인 콜백예제 public class CallbackExample { void Main() { Mother mother = new Mother(); Son son = new Son(); mother.GetSionToStudy(son); } } // class Mother { // 1번 public void GetSonToStudy(Son son) { son.Study(this); } // 3번 public void FinishStudy() { Debug.Log("Study done"); } } class Son { // 2번 (콜백을 위해..

    [C#] Delegate - 델리게이트(대리자)를 사용하는 이유

    🌳 Delegate 메서드를 담을 수 있는 타입. 관례적으로 Delegate 타입의 이름은 끝에 Delegate라는 접미사를 붙인다. JS의 함수를 변수처럼 사용하는 개념과 유사하다. C, C++ 개발자들에게는 간단하게 함수포인터 라고한다. 🌳 델리게이트를 사용하는 이유 보통 이벤트 핸들링을 위해서 사용한다. 콜백을 위해서도 사용한다. 델리게이트를 잘 사용하면 이벤트 규격(함수형태)만 잘 정의하면 필요한 정보를 필요한 오브젝트에 쉽게 전달할 수 있다. 🌳 델리게이트 생성 예제 public class DelegateExample { delegate void ExampleDelegate(); void Start() { ExampleDelegate del = Hello; del(); } void Hello()..