Languages/C#(31)
-
[C#] 더 간편하게 무명 함수 만들기! : Func, Action
*이 글은 책을 바탕으로 공부한 글입니다. 익명 메소드와 무명 함수는 일회성으로만 사용할 함수 사용에 용이하며, 코드를 좀 더 간결하게 만들어 주는 요소들이다. 하지만, 둘 다 대리자(Delegate)가 필요하기 때문에 사전에 먼저 대리자를 선언해줘야 하는 번거로움이 있다. 귀찮지 않을 수가 없다. 한 번만 사용할 건데, 사용할 때마다 매번 대리자를 선언해야 한다니... 그래서 이런 번거로움을 해결해주기 위해, 마이크로소프트 .NET에서는 이런 익명 메소드와 무명 함수들을 위한 대리자들을 미리 선언을 해놨다. 그 대리자들이 바로 오늘 알아볼 Func와 Action이다. Func 결과를 반환하는 메소드를 참조하기 위해 만들어졌다. .NET에는 모두 17가지 버전의 Func 대리자가 있다. public de..
2022.03.29 -
[C#] 메소드를 좀 더 간결하게 만들자! : 람다식(Lambda Expression)
*이 글은 책을 바탕으로 공부한 글입니다. 람다식 (Lambda Expression) 람다식은 익명 메소드를 만들기 위해 사용한다. 람다식으로 만드는 익명 메소드는 무명 함수(Anonymous Function)라고도 부른다고 한다. 메소드가 입력(매개변수)과 출력(반환값)을 가지고 있는 것처럼 람다식 또한 마찬가지다. 기본적인 람다식을 선언하는 형식은 다음과 같다. 매개변수_목록 => 식 => 연산자는 입력 연산자이다. 이 연산자는 그저 매개변수를 전달하는 역할만 한다. 람다식에서는 =>를 중심으로 왼편에는 매개변수가, 오른편에는 식이 위치한다. // 익명 메소드를 만드려면 대리자가 필요하다. delegate int Calculate(int a, int b); ... static void Main(str..
2022.03.28 -
[C#] 객체에 일어난 사건 알리기! : 이벤트(Event)
*이 글은 책을 바탕으로 공부한 글입니다. 어떤 일이 발생하는 것을 알 수 있는 방법은 크게 두 가지가 있다. 일이 발생하는지 계속 감시하기 일이 발생하면 알려달라고 하고 다른 일 하고 있기 두 번째는 뭔가 익숙하지 않나? 저번 글에서 다뤘던 콜백(Callback) 내용이다. 이것에 관해, C#에서는 대리자(Delegate)라는 녀석이 존재하지만, 이벤트(Event)라는 녀석도 존재한다. 하나만 있으면 될 것 같은데, 왜 C#에서 이 둘을 제공하고 있고 어떤 점이 다른지에 대해 차근차근 알아보도록 하자. 이벤트(Event) 제일 흔하게 볼 수 있는 이벤트가 아마 알람 시계가 아닐까 싶다. 우리는 알람 시계의 시간을 설정 해놓고, 다른 일을 하고 있다가 시간이 되면 알람 소리를 들어서 시간이 다 된 것을 ..
2022.03.28 -
[C#] 대리자(Delegate)에 대해 좀 더 알아보기 - 2
*이 글은 책을 바탕으로 공부한 글입니다. 1. 일반화 대리자 (Generic Delegate) 대리자는 일반 메소드뿐만 아니라 일반화 메소드도 참조할 수 있다. 물론 이 경우에 대리자 또한 일반화 메소드를 참조할 수 있도록 형식 매개변수를 이용하여 선언되어야 한다. delegate void Memo(T memo); 참조할 메소드 또한 당연히 일반화 메소드로 작성해줘야 한다. static void WriteMemo(T memo) { Console.WriteLine($"{memo.GetType()} 형식의 메모"); Console.WriteLine($"내용은 {memo}\n"); } 테스트를 해보면 이제 다음과 같이 뜨는 것을 볼 수 있다. static void Main(string[] args) { Me..
2022.03.27 -
[C#] 콜백 함수(Callback)는 무엇이고 대리자(Delegate)는 뭘까?
*이 글은 책을 바탕으로 공부한 글입니다. 개요 콜백(Callback)이란 개념을 처음 들은 것은 유니티를 공부할 때였다. 게임이란 분야 특성상, 비동기 처리가 주를 이루는 시점에 콜백이란 개념은 필수적으로 등장하는 것 같았다. 그 당시에는 배경 지식이 아무것도 없었기 때문에 읽어봐도 무슨 말인지 몰랐다. 지금도 물론 완벽하게 아는 것은 아닐 수도 있다. 그래도 책을 보며 공부한 것을 토대로 내가 이해한 내용들을 정리해볼 생각이다. 이 글을 읽는 다른 분들께 도움이 되셨으면 좋겠고, 틀린 점이 있다면 지적도 해주셨으면 한다. 1. 콜백 (Callback)이란? 정의 개념으로 본다면, 피호출자가 호출자를 다시 호출하는 것이라고 한다. 이 말만 들으면 무슨 말인지 이해가 잘 안 됐다. 그래서 책과 구글에 있..
2022.03.27 -
[C#] 프로그램이 어떠한 상황에서도 잘 견딜 수 있도록! : 예외 처리(Exception Handling)
*이 글은 책을 바탕으로 공부한 글입니다. 프로그램을 사용하는 사용자들은 정말 창의성이 돋보이는 여러가지 방법들을 적용하기도 한다. 술집 프로그램을 만들어서 사용자에게 주문을 받을 준비를 합니다. 사용자가 들어오자, 화장실이 어딨냐고 묻습니다. 술집은 모두 불에 타버렸고, 그렇게 전부 사라졌습니다. SNS에서 가끔 볼 수 있는 프로그래밍 유머인데, 지금 딱 비유하기 적당한 상황인 것 같다. 만약 데이터베이스의 트랜잭션과 같은 부분에서 오류나 다운이 발생했을 때, 처리해주는 부분이 없다면 피해는 치명적일 것이다. 이렇듯, 프로그램이 오류를 일으키거나 심지어 다운까지 일어나지 않도록 잘 처리하는 것이 필요하다. 이것을 예외 처리(Exception Handling)이라고 한다. 예외 처리 (Exception ..
2022.03.26