본문 바로가기

프로그래밍/C#

C# 람다식 Lambda Expression

 

참고로 실행은 안해봤음 ㅋㅋㅋ..

오늘 작업 하다가 함수로 빼기엔 애매하지만 반복적으로 카피엔 페이스트 해야될 코드 쓰레기를 보고

람다가 떠올라서 적용해봤다

 

 

 

static public class TestClass {

	// 함수 원형
	static delegate int del(int i);
	static delegate int test(int x, string y);
	static delegate void noneParam();
	
	
	// 함수를 구현할 변수..
	static private del delegate_;
	static private test test_;
	static private noneParam noneParam_;
	
	static public TestClass()
	{
		// 함수 구현
		delegate_ = x => {
			return x * x; 
		};
		
		test_ = (x, y) => {
			Console.WriteLine("{0}:{1}", x, y);
			return 0;
		};
		
		noneParam_ = () => {
			Console.WriteLine("hi~^^");
		};
	}
	
	static public int ExceDelegate(int x)
	{
		// 사용..
		return delegate_(x);
	}
	
	static public int ExceTest(int x, string y)
	{
		// 사용..
		return test_(x, y);
	}
	
	static public void ExceNoneParam()
	{
		// 사용..
		return noneParam_();
	}
}


static void Main(string[] args)
{
	int result = TestClass.ExceDelegate(2);
	int result = TestClass.ExceTest(2, "hi");
	TestClass.ExceNoneParam();
}

 

 

 

 

비동기 처리를 하는 람다식도 있다

신기하군

 

비동기에 대한 개념은 아래 사이트에서

http://technet.microsoft.com/ko-kr/library/hh191443.aspx

 

 


public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        button1.Click += async (sender, e) =>
        {
            // ExampleMethodAsync returns a Task.
            await ExampleMethodAsync();
            textBox1.Text += "\r\nControl returned to Click event handler.\r\n";
        };
    }

    async Task ExampleMethodAsync()
    {
        // The following line simulates a task-returning asynchronous process.
        await Task.Delay(1000);
    }
}