본문 바로가기

프로그래밍

(54)
[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..
[C#] 배열 (이차원배열, 가변배열, 메서드) 배열 -기본형: 데이터형[] 배열명; ( 예시: int[]​ name; ) -기본적으로 new를 통해 생성(초기화)하는 참조형이다. -모든 배열은 new를 통해생성할때만 비로소 배열로의 역할이 가능하다. -Array로부터 파생되기 때문에 Array의 메소드들을 상속받는다. -함수의 인자값이나 리턴값으로 사용할 수 있다. -예제 ​ 이차원 및 다차원 배열 -이차원배열: 데이터형[,] 배열명; -삼차원배열: 데이터형[,,] 배열명; ​ ​ 가변배열 -행과 열에 대한 계수를 고정하는것이 아니라 가변적으로 다르게 생성할 수 있는것을 이야기 -기본형: 데이터형[][] 배열명; ( 예시: int[][] name; ) -사용예 int[][] array = { new int[] {1, 2, 3}, new int[] {..
[C#] C샵 구조체 예제 1. C# 구조체의 기본적인 특성 -멤버, 속성, 메서드를 입력 가능합니다. -const, static형만 구조체 내에서 초기화 가능합니다. -new를 이용하여 구조체를 생성하면 초기화 되지 않은 값들이 0으로 초기화됩니다. -구조체는 값으로 취급되어, 다른 구조체에 구조체 값을 복사할 수 있습니다. ​ ​ 2. 구조체와 클래스의 차이 -구조체는 값이지만 클래스는 참조의 성격을 갖고 있습니다. -구조체는 값만을 복사하지만, 클래스는 포인터처럼 참조를 복사해서 다음와 같은 결과가 출력됩니다. ​ ​ Structure types - C# reference Learn about the struct type in C# docs.microsoft.com 3.MSDN ​ ​ ​ ​ ​ ​ ​ 이 글은 아래 강의를 ..