본문 바로가기

프로그래밍/C#

(10)
[C#] 01. 닷넷 프레임워크 닷넷 프레임워크 - 2002년에 마이크로소프트사에서 발표한 응용 프로그램 개발 환경 - 닷넷 프레임워크를 설치하면 가상 머신 역할을 하는 CLR(Common Language Runtime) 구성요소가 실행될 수 있는 환경이 윈도우 운영체제에 마련됨 - C# 컴파일러는 소스코드를 기계어가 아닌 IL(Intermediate Language)이라고 하는 중간 언어로 EXE/DLL 내부에 생성 닷넷 호환 언어 - CLR에 의해 실행되는 중간 언어는 어느 하나의 프로그래밍 언어에 종속된 것은 아님. 어떤 언어의 컴파일러든지 결과물을 중간 언어로 생성해 낸다면 CLR이 그것을 실행할 수 있음 - 이처럼 중간 언어로 번역하는 언어를 닷넷 호환 언어(.NET-Compliant Language)라고 함 - 닷넷 호환 언..
[C#] LINQ 집계 작업, 표준 쿼리 연산자 표준 쿼리 연산자는 LINQ 패턴을 형성하는 메서드입니다. 집계 작업은 컬렉션을 특정 조건으로 계산하여 하나의 값을 출력합니다. ​ 예를 들어 1달 동안 일일 온도 값을 기록한 컬렉션에서 평균 온도를 계산한다던지, 학생들의 성적을 기록한 컬렉션에서 가장 점수가 높은 학생을 찾는 작업을 수행할 수 있습니다. ​ 이러한 작업을 집계 작업이라고 하며, LINQ에서는 집계 작업을 위해 'Aggregate, Average, Count, Max, Min, Sum'함수를 지원하고 있습니다. 이번 글에서는 이중에서 'Aggregate'에 대해서만 설명해보고자 합니다. 집계 작업이 전체적으로 간단하기도 하고, Aggregate 가장 어려우면서 가장 많이 사용하는 함수이기 때문입니다. Aggregate에 대해 설명하기 전..
[C#] LINQ 프로젝션 작업, 표준 쿼리 연산자 표준 쿼리 연산자는 LINQ 패턴을 형성하는 메서드입니다. 프로젝션 작업은 이후에 사용할 속성으로만 구성된 새 양식으로 개체를 변환하는 작업을 가리킵니다. ​ 예를 들어 문자열의 배열로 이루어진 개체가 있다고 하고 여기서 첫글자만 뽑아서 활용하고 싶을 때, 이 개체의 문자열에서 첫글자만을 남기는 새로운 양식으로 변환하는 작업을 생각하시면 됩니다. ​ 이러한 작업을 프로젝션이라 하며, LINQ에서는 프로젝션 작업을 위해 'Select'와 'SelectMany'를 지원하고 있습니다. Select의 경우 모든 소스 값에 대해 하나의 결과 값을 생성합니다. 따라서 전체 소스 컬렉션과 동일한 개수의 요소가 들어 있는 컬렉션을 만듭니다. 반면, SelectMany는 각 소스 값에서 연결된 하위 컬렉션을 포함하는 하..
[C#] LINQ 데이터 필터링, 표준 쿼리 연산자 표준 쿼리 연산자는 LINQ 패턴을 형성하는 메서드입니다. 이를 잘 활용하기 위해 하나하나 정리해보도록 하겠습니다. 순서는 내맘대로. 가장 쉬워보이는거 먼저 정리하겠습니다. 오늘은 데이터 필터링 입니다. 출처는 MSDN 입니다. 표준 쿼리 연산자 개요 - Visual Basic 표준 쿼리 연산자 개요(Visual Basic)Standard Query Operators Overview (Visual Basic) 이 문서의 내용 --> 표준 쿼리 연산자는 LINQ 패턴을 형성하는 메서드입니다.The standard query operators are the methods that form the LINQ docs.microsoft.com 필터링 개요 필터링은 지정된 조건을 충족하는 요소만 포함하도록 결과 집..
[C#] 람다식 람다식이란 람다식은 익명함수(anonymous function)을 생성하기 위한 식으로 객체 지향 언어보단 함수 지향 언어에 가까운 프로그래밍 기법이다. 함수형 프로그래밍은 병렬처리와 이벤트 지향 프로그래밍에 적합하며, 주로 고차 함수에 인자로 전달되거나 고차 함수가 돌려주는 결과값으로 쓰인다. C#에서는 LINQ에 응용하기 위해서도 사용된다. ​ 장점 - 코드의 간결성 : 불필요한 루프문의 삭제 가능, 동일한 함수 재사용 가능 - 필요한 정보만을 사용하는 방식을 통한 퍼포먼스 향상 ​ ​ ​ 람다식의 기본 매개변수 => 식 좌측에 있는 매개변수들을 우측의 식에 대입하는 형식 C# 컴파일러에서는 매개변수의 형식을 유추하는 '형식 유추'기능을 사용함으로 매개변수의 형식을 생략함으로써 코드를 더 간결하게 작..
[C#] 널 자료형과 연산자 ( Nullable, Elvis 등 ) 이 글은 C에서는 쓰이지 않는 Null과 관련된 내용들을 정리하기 위해 작성하였습니다. 글에서는 아래 3가지 개념을 소개할 것입니다. ​ 1. Nullable 2. 널 조건부 연산자 ( Elvis operator ) 3. Null 병합 연산자 ​ 기존에 자주 사용하던 C에서는 보지 못한 개념들이지만, 이것들을 잘 이용하면 효율적인 프로그램을 작성할 수 있을것 같다는 생각이 듭니다. ​ ​ 1. Nullable C#의 자료형에는 값 타입과 참조 타입이 있습니다. ​ 값 타입 : 스택에 데이터를 저장하며, 코드 블록이 끝나면 사라짐 참조 타입 : 힙 메모리에 데이터를 저장하며 스택에서 이 데이터를 가리키는 주소를 저장함. 힙 메모리에 저장된 값은 코드 블록이 끝나도 사라지지 않음 ​ 참조 타입은 현재 가리키..
[C#] Csharp 델리게이트와 이벤트 델리게이트(Delegate)는 '대리자'라는 뜻으로 함수의 포인터처럼 메서드를 안전하게 캡슐화해서 사용하는 형식입니다. 델리게이트는 개체 지향적이고 형식이 안전하며 보안이 유지됩니다. ​ 델리게이트의 기본적인 사용방법을 쉽게 설명하자면 '메소드를 참조하는 변수'라고 할 수 있습니다. 말로만 들으면 어려울수도 있으니, 아래 예제와 함께 다시 설명을 읽어보시면 이해에 도움이 될겁니다. ​ ​ 소스 출력 Hello1 Hello2 A B A ​ ​ 위에 '예제2'에서 보이듯이 한 델리게이트에 여러가지 메서드를 저장하여 한번에 호출할 수 있습니다. 이를 '멀티캐스트 델리게이트'이라고 합니다. ​ 여기서 왜 델리게이트를 써야하나?라고 하고 물으시는 분들에게 제가 느낀것을 이야기해보자면 ​ 1. 함수의 매개변수에 델..
[C#] LINQ를 이용한 점수순으로 정렬 오늘은 LINQ라는 정말 혁신적인 기능을 배워서! 그것을 복습할 겸 프로그램을 제작해봤습니다. ​ LINQ란 Language Integrated Qurey의 약자로, SQL를 이용하여 데이터를 빠르고 편리하게 추출하는 방식입니다. 데이터베이스를 공부하신 분들이라면 익숙한 내용이겠네요! ​ 코드설명 먼저 점수를 비교할 학생들을 생성합니다. 이 코드에서는 학생을 설정하면 자동으로 5개의 과목에 랜덤한 점수를 얻게 설계하였습니다. 그럼 그 점수의 총합과 평균을 구한 후, 학생들의 총합 점수를 비교하여 점수가 높은 순서대로 출력하는 코드입니다. using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sy..