GSI

delegate (위임) 사용법

C# 2007. 10. 19. 13:49 |

Delegate 사용법

C#은 C언어에는 없는 위임이라는 독특한 특징을 도입했다. 기본적으로 위임이란, 같은 인터페이스를 만족시키는 한, 어느 클래스로부터 홨는지알지 못하더라도 넘겨주고 사용할 수 있는 다른 클래스에 있는 함수의 참조이다.

사용자 삽입 이미지

심플 예제

위의 화면에서 보는것과 같이 위쪽에 TextBox에 입력한 문자열을 Process를 누르게 되면
대문자 또는 소문자를 자동으로 만들어 주는 기능을 한다.
이때 Capital, Lower를 체크 해주게 되는데
내부적인 코드는 아래와 같다.

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        private delegate string fTxDelegate(string s);
        fTxDelegate ftx;

        public Form1()
        {
            InitializeComponent();
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            button1.Enabled = true;

            ftx = new fTxDelegate(new Capital().fixText);
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            button1.Enabled = true;

            ftx = new fTxDelegate(new Lower().fixText);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(ftx(textBox1.Text));
        }
    }

    public class Capital
   {
        public string fixText(string s) {
            return s.ToUpper();
        }
    }

    public class Lower
   {
        public string fixText(string s) {
            return s.ToLower();
        }
    }
}

fix 메서드는 어떤 fixText를 호출할지를 자동으로 결정해 준다.

Posted by gsi
: