닷넷 프레임워크 125

#057_닷넷(.NET)_.Net Framework 기본 - 대리자 & 이벤트 & 람다 정리

안녕하세요 삽잡이입니다. 이번 시간에는 대리자, 이벤트, 람다에 대해서 정리해보려고합니다.가뜩이나 글만 주구장창 쓰는데,오늘은 더욱 글이 흘러 넘칠 것 같군요... 시작합니다! '대리자, 이벤트, 람다'이 모두는 모두 delegate에 관한 이야기입니다. 대리자는 메서드를 가리키는 객체를 말하지요.그러면 왜 메서드를 가리킬까요? 그 객체를 가지고 메서드를 호출하기 위해서입니다.아무튼... 대리자는 함수를 가리키는 객체를 만드는 문법입니다.그리고 그 객체를 함수로 호출하는 문법이지요. 대리자는 이미 하나의 타입으로 자리를 잡았습니다.그래서 대리자는 가장 많이 쓰이는 대리자로써 라는 굉장히 중요한 핸들러로 만들어져있지요.즉, 이런 delegate가 BCL에 이미 만들어져있다는 것입니다. 그래서 delegat..

#056_닷넷(.NET)_.Net Framework 기본 - 람다(Lamda)

안녕하세요 삽잡이입니다. 이번 시간에는 람다에 대해서 알아보려고합니다. 익명 메서드를 보다 쉽게, 축약해서 사용하자는 뜻이 이루어져'람다'라는 것이 탄생됬습니다. 이와 같은 식을 '람다 식'이라고 부릅니다. 그리고 이와 같이 귀여운 기호를 바로, '람다 기호'라고 부릅니다. 람다는 익명 메서드를 좀 더 간단하게 만들기 위해서메서드, 정의, 기능을 아주 임시적으로! 쉽게! 내리기 위해서 만든 기능입니다. 익명 메서드는 이름이 없는 메서드이지만,람다 식은 익명 메서드를 더 쉽게 만들어 낼 수 있는 문법이라는 것입니다. 우선, 람다식이 왜 나왔나요...callback 하다가 어떻게 저렇게 요렇게 하다가 람다까지 왔습니다. 아무튼...람다는 거의 predicate를 위해서 만들어 놓은 문법입니다. (지난 시간에..

#055_닷넷(.NET)_.Net Framework 기본 - Predicate

안녕하세요 삽잡이입니다. 이번 시간에는 Predicate에 대해서 알아보려고합니다. Callback이라는 의미는'서버가 클라이언트의 코드를 실행하는 것'을 가리킵니다. 왜 콜백이라는 개념이 있는 것인가요?바로 서버에 클라이언트의 정책을 반영하기 위해서 있는 개념입니다. 그런데, 여기서 정책의 99%는 '판단'이 들어갑니다.판단을 컴퓨어 용어에서는 Predicate 라고 부르지요.어떤 프로그램을 가나 Predicate 를 보게 되면, '어떤 무엇인가를 판단하도록 만들어내는 구나..' 알 수 있습니다. 따라서, 이를 클라이언트에게 판단하는 기능을 주고, 서버가 그 판단한 결과를 가져다 쓴다는 개념으로써 사용되는 것입니다. 우선, C++에서의 predicate의 정의를 생각해볼까요?C++에서 predicate..

#054_닷넷(.NET)_.Net Framework 기본 - 익명메서드(Anonymous Method)

안녕하세요 삽잡이입니다. 이번 시간에는 지난, 지지난 시간에 이어서 delegate의 연장선인 익명 메서드에 대해서 알아보겠습니다. 익명 메서드란, 말 그대로 '이름 없는 메서드'입니다.모든 메서드에는 이름이 있어야되지 않습니까? 메서드의 이름을 통해 메서드를 호출할 수 있었기 때문입니다. 그런데, 이름 없이도 호출이 되는 경우가 있습니다.이 때는 바로 '이벤트의 핸들러'일 때입니다. 왜 이벤트 핸들러일 경우 메서드에 이름이 없어도 될까요?굳이 메서드로 만들고 핸들러로 연결 시키는 것이 아니라, 이름이 없으면 행동만 있으면 되기 때문에즉, 어떻게 할 것인지에 대해서 절차만 정의 되있으면 되기 때문입니다. 이벤트는 어떤 이벤트가 발생하면 메서드를 호출해줍니다.그런데, 함수 지정할 필요 없이 이벤트가 발생하..

#053_닷넷(.NET)_.Net Framework 기본 - 이벤트(Event)

안녕하세요 삽잡이입니다. 이번 시간에는 delegate에 이어 event에 대해서 알아보려고합니다. delegate는 목적이 Callback인지 아닌지를 구분해야하니 헷갈리는 경우가 있습니다.즉, delegate는 여러 관점에서 쓰이기 때문에 사용자가 직접 구분해야한다는 것입니다. 그런데, 이벤트를 사용하게 되면 무조건 Callback임을 알 수 있습니다.이벤트는 delegate를 등에 엎고 만들어졌습니다. 이벤트는 이렇게 만들어집니다. 그런데, 여기서 event 키워드를 가리면? 대리자가 됩니다. 하지만, event를 붙이게 되면 그 때서야 이제 event라고 불린다 이겁니다. 또한, 접근 권한이 public입니다.왜냐, 대리자라면 private이어야합니다. 왜냐, 필드이기 때문입니다.그런데, 이벤트는..

#052_닷넷(.NET)_.Net Framework 기본 - 대리자(delegate)

안녕하세요 삽잡이입니다. 이번 시간에는 대리자에 대해서 알아보려고합니다. 대리자는 우선 다섯가지 형식중 하나의 형식입니다.똑같은 클래스 형식이지만 중요하니 떼어뒀지요. 이 대리자의 목적은 '내가 원하는 메서드를 가리키고, 이 객체로 호출을 하는 것이 목적입니다.'즉, 내가 원하는 메서드가 있다면 그 메서드를 가리키고,그 메서드를 delegate로 호출하는 것이 목적이지요.좀 더 정확하게 말하자면 '메서드 처럼 동작하는 객체'를 만들어내는 것이 delegate 의 목적입니다. 이와 비슷한 개념으로는 C의 함수 포인터 ,C++의 Functor가 있습니다. C, C++, C#에 이런 기능들이 있는 것은'함수 처럼 동작하는 어떤 것'을 만들어보자는 것이며, 이 어떤 것이 객체지향에서는 '객체'라고 부르는 것이지..

#051_닷넷(.NET)_.Net Framework 기본 - 제네릭(Generic) 특징

안녕하세요 삽잡이입니다. 이번 시간에는 지난 시간에 이어서 제네릭에 대해 알아보려고합니다.특징 위주로 한번 알아볼까요? 고고 (ㅋㅋ) ICollection 인터페이스는 모든 컬렉션의 기본 인터페이스입니다.Enum을 제외한 모든 타입은 모두 Generic이 가능하다고 했었지요... 이 제네릭은 크게 5개의 컬렉션을 제공해줍니다. 몇 몇 클래스의 특징을 살펴보겠습니다.LinkedList 클래스의 경우에는 IList 인터페이스를 상속받지 않기 때문에,댈괄로 연산자 즉, 인덱서(속성)이 없습니다.따라서 foreach문을 사용하지 못합니다. 그리고 Dictionary의 경우 hash 기반을 구성된 이 클래스는기본적으로 키와 값이 한 쌍으로 이루어집니다.Key 값에는 모든 타입이 올 수 있지요... 왜냐, 모든 타..

#050_닷넷(.NET)_.Net Framework 기본 - 제네릭(Generic) 소개

안녕하세요 삽잡이입니다. 이번 시간에는 제네릭에 대해서 알아보려고 합니다. Collection은 일반적으로 자료구조라고 부릅니다.개념적으로 클래스나 실질적으로 객체를 일컷는 용어이지요.Generic은 일반적으로 위의 뜻에서 '일반화'가 붙은 것입니다. 왜 일반화가 들어갈까요? 일반적으로 좌측은 collection, 우측은 제네릭이라고 합니다. 둘 다 자료구조 클래스이니 collection입니다.제네릭도 collection입니다.하지만, 가 붙어있죠...즉, 일반화 기능이 추가되어있는 것입니다. Array가 만약, int[] 형식을 담고있다면 이는 int형 Array입니다.하지만, 제네릭을 사용하게 되면 T형 Array로써 사용자가 타입을 결정할 수 있게 됩니다.T를 결정할 수 있다 이겁니다. 뭐.. 별거..

#049_닷넷(.NET)_.Net Framework 기본 - IComparable & IComparer

안녕하세요 삽잡이입니다. 이번 시간에는 닷넷에서 많이 사용하는 인터페이스의 형식중IComparable 과 IComparer 에 대해서 알아보려고합니다. IComparable은 '나랑 너랑' 비교입니다.그리고 IComparer는 '제 3자'끼리 비교하는 인터페이스입니다. IComparable 인터페이스에는 int형을 반환하고, object형식의 인자를 받는 CompareTo() 메서드가 있습니다. 즉, 나와 상대 객체와 비교를 하겠다는 것입니다.보통 반환 형은 내가 크면 1, 상대가 크면 -1, 같으면 0을 반환합니다. IComparer은 int형을 반환하며, object형 인자를 두개 받는..즉, 두개의 object형식을 비교하는 Compare() 메서드가 있습니다. 두 인터페이스는 모두 같이 비교를 하..

#048_닷넷(.NET)_.Net Framework 기본 - ICloneable

안녕하세요 삽잡이입니다. 지난 시간까지 열나게... 깊은 복사와 얕은 복사에 대해서 알아봤었지요...이번 시간에는 복사가 가능하도록 기능을 제공해주는 ICloneable 인터페이스에 대해서 알아보도록 하겠습니다. ICloneable 인터페이스는 딱 하나의 인터페이스를 가지고 있습니다.바로, object형을 반환해주는 clone()이라는 메서드를 가지고 있지요...달랑 그거 하나입니다... 아무튼.. 왜 가지고 있을까요? 수 없이 많은 종류의 객체들 중에서 복사에 대해 필요성을 가지고 있는 객체들은 몇개가 될까요? class 외부에서 봤을 때..즉, Client 입장에서 봤을 때 어떤 객체가 복사가 가능한지에 대해서 그 유무를 파악할 수 있어야되지 않습니까? 따라서 복사할 수 있는 객체만 복사를 하도록, ..