신입 개발자 공부 과정

Delegate 대리자1 본문

C#/수업 내용

Delegate 대리자1

Lewisjkim 2022. 1. 4. 23:08

Q1

//1.대지자 정의
        private delegate void Del();//본문 없다
        
        public App()
        {
            //3 대리자 변수 정의 메서드 연결(인스턴스)
            Del handler = this.SayHello;
            //Del handler = new Del(this.SayHello);와 동일

            //4 대리자 호출(대리자가 참조하고 있는 메서드를 호출)
            handler();
        }

        //2.대리자에 연결할 메서드 정의
        //시그니쳐가 같아야 한다
        private void SayHello()
        {
            Console.WriteLine("Hello World!");
        }

---------

Q2

program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    class Program
    {
       
        static void Main(string[] args)
        {

            new App();
        }
    }
}

marine

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    
    class Marine
    {
        public delegate void DelDie(); //1 대리자 선언

        //3대리자 변수 선언
        public DelDie OnDie;
        //생성자
        public Marine()
        {

        }
        public void Hit()
        {
            this.OnDie();   //5. 대리자 호출 
        }
    }
}

app

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    class App
    {
        //생성자
        public App()
        {
            Console.WriteLine("App생성자");
            Marine marine = new Marine();//마린 객체 생성

            //4대리자에 메서드 연결
            marine.OnDie = this.MarineDieEventHandler;
            marine.Hit();
        }
        //2대리자 연결한 메서드 정의
        public void MarineDieEventHandler()
        {
            Console.WriteLine("마린이 죽었습니다.");
        }
    }
}

-------------

Q3.

Say Hello 메서드를 델리게이트를 사용하여 호출한다

program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    class Program
    {
       
        static void Main(string[] args)
        {

            new App();
        }
    }
}

app

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    class App
    {
        //1 create delegate
        private delegate void Del();

        //constructor
        public App()
        {
            Console.WriteLine("App 생성자");
            Del del = this.SayHello;//3 create delegate variable

            del();//4 announce delegate

        }

        //2 create the method
        private void SayHello()
        {
            Console.WriteLine("아무것도 입력하지 않았습니다");
        }
        //private void SayHello(string message)
        //{
        //    Console.WriteLine(message);
    }
    
}

------

Q4.

program

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    class Program
    {
       
        static void Main(string[] args)
        {

            new App(3, 4);
            
        }
    }
}

app

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TestDelegate
{
    class App
    {
        //1 create delegate
        private delegate int Del(int a, int b);

        //constructor
        public App(int a, int b)
        {
            Console.WriteLine("생성자");
            //3 create delegate variable
            Del val = Sum;
            
            //4 announce delegate
            Console.WriteLine(val(a, b));

        }
       
        //2 create the method
        private int Sum(int a, int b)
        {
            return a + b;
        }
    }
}

 

Q5

 

 

 

 

 

 

 

 

 

 

 

 

'C# > 수업 내용' 카테고리의 다른 글

Dictionary  (0) 2022.01.06
Delegate 대리자 2 + Lamda 람다  (0) 2022.01.05
1월3일 인벤3  (0) 2022.01.03
12/30 수업 스타크래프트 부대지정  (0) 2021.12.30
12/29수업 item + inventory  (0) 2021.12.29