.NET FRAMEWORK 123

#067_닷넷(.NET)_.Net Framework 기본 - LINQ 내부 표현 방식

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ 내부 표현 방식에 대해서 알아보려고합니다. LINQ는 내부적으로 어떻게 동작하고 있는 것일까요? 사실 이와 같이 코드를 구현하게 되더라도,모두 컴파일러가 함수를 호출해주게 됩니다. 이처럼 자동으로 호출해주는 기능들 가운데서Func와 Action이라는 대리자에 대해서 알아보고자합니다. Func, Action 대리자는 모두 delegate입니다. 당연한 소리를...함수를 가리키고 함수처럼 동작하는 객체로써,함수를 호출하려고 사용하지요. 대리자를 범용적으로 사용하는 방법에는 두가지가 있습니다.Func는 return 타입을 갖고, 인수가 없는 놈부터 시작하여서 여러개인 놈들을 미리 만들어 놓습니다.그리고 Action은 return 타입이 void이며, 인수가 없는..

#066_닷넷(.NET)_.Net Framework 기본 - LINQ의 역할 (사용자 정의형)

안녕하세요 삽잡이입니다. 이번 시간에는 사용자 정의형에 대한 LINQ에 대해서 좀 알아보려고합니다. 사용자 정의 타입 또한 LINQ가 가능합니다.또한, where 즉, 조건 절에서 결과치가 bool 형식이라면 몇 개의 조건을 줘도 상관없습니다. 제네릭 컬렉션의 경우 모두 IEnumerable 형식을 상속받습니다.따라서, LINQ의 동작에 대해서 걱정할 것이 없습니다.하지만, 기본적으로 IEumerable 형식을 지원하는 LINQ에서비 제네릭 컬렉션의 경우 제네릭 이전에 나온 인터페이스로써 꼼수(?)를 써야 LINQ를 사용할 수 있게 됩니다. 그 꼼수는 바로 OfType() 이라는 호환 가능한 확장 메서드를 사용하는 것입니다. 내부적으로 ArrayList는 모두 다 저장할 수 있는 object 타입입니다...

#065_닷넷(.NET)_.Net Framework 기본 - LINQ의 역할 (기본형) 2

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ 쿼리를 가지고 놀 때기본형식으로 가지고 노는 경우에 대해서 지난시간에 이어 설명해보려고합니다. LINQ에도 확장 메서드가 사용되고 있다는 사실을 아십니까?사실, 확장 메서드는 IEnumerable 형식의 인터페이스에 만들어져 있습니다. 따라서, LINQ를 동작시키는 모든 형식은 IEnumerable의 수 많은 기능을 사용할 수 있습니다.즉, IEnumerable를 구현한 녀석이라면 모두 다 확장 메서드를 사용할 수 있다 이겁니다. 어마어마하죠? 아무튼... LINQ는 두가지로 실행할 수 있다는 사실을 아십니까?바로, '즉시 실행'과 '지연 실행'입니다.즉시 실행의 경우 LINQ 쿼리를 때렸을 경우 '지금' 동작이 수행되는 것이고, 지연 실행은 LINQ 쿼리..

#064_닷넷(.NET)_.Net Framework 기본 - LINQ의 역할 (기본형) 1

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ의 기본적인 문법들에 대해서 알아보려고합니다.LINQ 중에서도 LINQ to Object에 대해서 알아보도록 하지요..즉, 객체 대상으로 LINQ를 때릴 때를 살펴보자 이겁니다. LINQ는 모든 데이터 타입을 다룰 수 있는 기능을 제공해줍니다.쿼리를 날릴 대상(Target)만이 달라질 뿐이지 문법이 어디 달라지겠습니까?즉, 누구를 타겟으로 질의를 던질 수 있느냐로 종류만 나뉠 뿐이라는 것입니다.그 종류에는 Object, XML, DataSet, Entities, 병렬 LINQ로 나뉩니다. DataBase를 대상으로도 LINQ를 던질 수 있는 종류도 있습니다.DataSet과 Entities인데요... 이 들이 바로 데이터베이스와 관련된 내용입니다.LINQ는 어..

#063_닷넷(.NET)_.Net Framework 기본 - LINQ 소개 및 관련 기능

안녕하세요 삽잡이입니다. 이번 시간에는 LINQ가 무엇인지, 그리고 어떤 기능이 들어가있는지에 대해서간략하게(?) 알아보려고합니다. LINQ는 Language Intergranted Query를 말합니다.즉, 통합 쿼리 언어라고 말 할 수 있지요. LINQ는 데이터 집합 즉, 단일 데이터가 대상이 아닌, 여러 데이터가 모여있는 집합을 대상으로 사용됩니다. 프로그램의 구조를 살펴보도록 하겠습니다. 쿼리 언어의 대표적인 예로는 SQL이라는 언어가 있습니다.Structed Query Language로써, APP과 DB를 관리하는 수 많은 DBMS와 소통을 위한 언어입니다.참고로 DBMS는 DB를 관리하는 어플리케이션 프로그램을 말합니다. 데이터베이스와 이야기하는 표준 언어를 만들었는데이 데이터베이스와 이야기하..

#062_닷넷(.NET)_.Net Framework 기본 - 부분 클래스(partial class)

안녕하세요 삽잡이입니다. 이번 시간에는 부분 클래스에 대해서 알아보려고합니다. parrial이라는 키워드가 들어갑니다.해당 키워드를 통해 부분 클래스를 작성할 수 있습니다.부분 클래스를 사용하게 된다면 하나의 클래스를 여러 코드 파일에 나누어 작성할 수 있습니다.즉, 서로 시그니처가 같다면 나뉘어져 있어도 최종적으로 컴파일러는 하나로 판단한다 이겁니다. 위의 코드인 Point 클래스를 두 개의 partial class 즉, 부분 클래스로 구현할 수 있습니다. 정말 부분입니다.이 둘이 합쳐지면 실제 하나의 코드를 이루게 되는 것입니다. 과연 이 부분 클래스는 어떠한 장점을 가지고 있을까요?다음에 로직, 디자인을 완벽하게 분리하는 경우가 올 때 이 부분 클래스가 큰 힘을 줄 수 있습니다. 뭔 소리냐, 파일에..

#061_닷넷(.NET)_.Net Framework 기본 - 확장 메서드

안녕하세요 삽잡이입니다. 이번 시간에는 확장 메서드에 대해서 알아보려고합니다. 확장 메서드는 중요한 문법입니다.물론, 어느 하나 중요하지 않는 문법이 없겠지만요. 허허... 이 확장 메서드라는 녀석 덕분에 C# 코드의 기능이 더욱 범용화되고 유연해졌습니다.학장 메서드란, 내 것이 아닌 남의 것의 메서드를 내 것처럼 사용하는 것입니다. 예를 들어, 원래 Sap이라는 녀석에는 '삽질'이라는 메서드가 없지만,다른 녀석에게 있는 '삽질'이라는 메서드를 나의 메서드처럼 동작하도록 하는 메서드를 뜻합니다.즉, 남의 메서드를 나의 객체의 메서드인듯 동작하도록 하는 메서드를 확장 메서드라고한다는 것입니다. 이 확장 메서드란 언제 유용할까요?확장 메서드에는 몇 가지의 장점이 있습니다. 원래 처음 개발할 때 먹고, 자고,..

#059_닷넷(.NET)_.Net Framework 기본 - 연산자 오버로딩`

안녕하세요 삽잡이입니다. 이번 시간은 연산자 오버로딩에 대해서 알아보려고합니다.C++을 배우셨던 분들이라면 분명 익숙하게 들릴 만한 주제라고 생각합니다. 연산자 오버로딩을 하는 이유는연산자가 정의되어있지 않은 형식 즉, 사용자 형식(클래스형식)에 대해서내장 되어있는 연산자가 동작하도록 하기 위해서 입니다.그 결과로 더 쉽게 사용할 수 있고, 명확한 코드를 만들 수 있게 되지요. C++과 다르게 C#에서 연산자 중복을 할 때에는 멤버 함수,전역 함수로 오버로딩을 하지 못합니다.왜냐하면 전역함수가 C#에서는 없기 때문입니다. 따라서 static 메서드를 사용하게 됩니다.그래서 이항 연산자 오버로딩을 할 때에는 인자를 기본적으로 두개를 받게됩니다. C#에서는 전역 함수 연산자 중복만을 제공해줍니다.즉, 전역 ..

#058_닷넷(.NET)_.Net Framework 기본 - 인덱서 메서드

안녕하세요 삽잡이입니다. 이번 시간에는 C#의 고급 기능인..즉, 몰라도 프로그래밍할 수 있는 기능 중 하나인 '인덱서 메서드'에 대해서 알아보려고합니다. 인덱서는 속성과 비슷합니다.속성처럼 만드는데 그대신 this 연산을 붙여주면 됩니다. 기존 속성을 만들 때 이렇게 했었지요... 그런데, 인덱서는 '속성의 특수한 형태'입니다.따라서 인덱서를 표현하기 위해서는 'this'를 사용하는 것입니다. 내 객체(this)로 [int idx]와 같이 호출하겠다는 것입니다.즉, this[int idx]가 인덱서가 되는 것입니다. 반드시 int 형식이 와야되는 것은 아닙니다.string, 혹은 다수의 인자등이 와도 접근이 가능해진다 이겁니다. this[int x, int y], this[string str] 과 같이..

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

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