본문 바로가기
728x90

개발 45

Lambda Expression - 람다식 람다식은 람다 대수의 형식을 프로그래밍 언어로 구현한 것이다. 람다 대수는 위키피디아에서... 이전에 Java에서의 람다식에 대해 글을 하나 썼었는데, C#의 람다식은 개념은 같으나 그 표현이 약간 달라서 따로 정리한다. 그리고 람다식에 대한 고민? 철학? 을 약간 더 알아보겠다. C#에서 람다식은 아래와 같이 사용된다. 코드로서의 람다식 : 익명 메소드의 간편 표기 용도 데이터로서의 람다식 : 람다식 자체가 데이터가 되어 코드 분석의 대상이 됨. 이 때 람다식은 별도로 컴파일할 수 있으며, 컴파일 시 메소드로도 실행 가능. 1번이 가장 빈번히 쓰이는 것이기에 주로 보겠다. 2번은 필요하면 찾아보자. 익명의 메소드라고 했다. 그럼 익명의 메소드를 한번 보고, 람다식으로는 어떻게 표현되는지 보자. // 익.. 2020. 7. 21.
as, is 연산자 as 와 is 연산자는 무엇일까? 간단하게 말하자면 형변환과 관련되어 있다. 1. as 오류를 발생시키지 않고 형변환이 가능한지 확인할 수 있다. 형변환이 된다고 하면, 해당 인스턴스를 반환하고 불가능하면 null 을 반환한다. Unit unit = new Unit(); Warrior warrior = unit as Warrior; // 형변환이 가능하면 warrior는 Warrior 인스턴스를 가지고, 불가능하면 null을 가진다. 단, 참조 형식끼리만 사용가능하다. (int 같은 값 형식과는 사용이 안됨.) 2. is as가 형변환하고 인스턴스 또는 null을 반환하는 반면, is는 bool형의 true/false를 반환한다. 또, 다른 특징은 as와는 달리 값 형식에서도 사용할 수 있다. 둘을 사용.. 2020. 7. 21.
List - 리스트 Java에서는 List가 인터페이스다. 그래서 실제로 사용하려면 ArrayList나 LinkedList 등을 사용했다. 하지만 C#에서는 List가 클래스다. 물론 IList라는 인터페이스도 존재한다. 여튼 List를 Java의 ArrayList나 LinkedList 처럼 사용하면 되겠다. ★ C#에서 맨 앞에 I가 붙으면 인터페이스를 뜻한다는 것을 참고하자. 본인이 인터페이스를 만들 때도 I를 붙여서 구분되기 쉽게 하는 게 좋겠다. ★ 그럼 List를 생성하는 것부터 주로 쓰는 함수를 알아보자. 1. 생성 List list = new List(); //T는 제네릭이다. 제네릭에 대한 공부는 따로 해오자. List myList = new List(){1, 2, 3}; //myList는 1, 2, 3을 가.. 2020. 7. 14.
값형식과 참조형식 값형식과 참조형식을 알기 전에 스택(Stack)과 힙(Heap)을 알고 가면 좋다. 2020/07/13 - [개발/C#] - Stack and Heap Stack and Heap 윈도우 프로그램은 기본적으로 하나의 스레드를 가진다. 그리고 이 스레드마다 저장소가 메모리에 개별적으로 할당되는데 이 영역이 스택이다.(기본 1MB 할당) 개발자가 변수를 선언하면 스택의 epdev.tistory.com 스택과 힙에 대해 간략히 알아봤다면, 값형식과 참조형식에 대해 알아보자. 값 형식에 속하는 것들은 sbyte, byte, char, short, ushort, int, uint, long, ulong, float, double, decimal, bool 이 있다. 값 형식의 경우 값은 스택에 저장되고, 변수는 그.. 2020. 7. 13.
Stack and Heap 윈도우 프로그램은 기본적으로 하나의 스레드를 가진다. 그리고 이 스레드마다 저장소가 메모리에 개별적으로 할당되는데 이 영역이 스택이다.(기본 1MB 할당) 개발자가 변수를 선언하면 스택의 어떤 영역을 사용하게 된다. C# 컴파일러가 변수 선언에 대한 스택 메모리를 할당해주는 것이다. 그리고 좋은 점은 이 컴파일러가 알아서 스택의 메모리도 해제해준다. 힙은 이와 달리 프로그램에서 추가적으로 메모리를 요청하면 할당되는 저장소다. 스택보다 유연한 느낌이지 않는가? 좋아보이지만, 그렇다고 힙 메모리를 남발하면 프로그램 성능 저하가 올 수 있다는 점을 알아두자. 힙에 메모리를 할당하는 것은 개발자가 명시적으로 요청한 것이므로 해제도 해줘야한다. 하지만 C#은 이것도 GC(Garbage Collector, 가비지 .. 2020. 7. 13.
? / ?? - C#의 물음표 C# 코드에서 가끔 물음표 두개(??)를 볼 수 있다. 기본적으로 물음표 한개(?) 는 Nullable을 뜻 한다. 그러니까 이 값이 null 일 수도 있다는 것을 명시해준다. string ? str; // str가 null일수도 있다. 그렇다면 물음표 두개(??)는 무엇을 뜻할까? 위의 어트리뷰트와 비슷하다. 얘가 null이야 아니야? null이면 이렇게 해주고, null이 아니면 저렇게 해줘. 약간 조건문의 냄새가 나지 않는가? 맞다. 조건문의 성격을 띈 연산자다. 아래 코드를 보자. string name = param ?? "default"; // param이 null이 아니라면 name에 param을 넣고, null 이라면 default를 넣어라. 이다. // param은 메소드의 파라미터든, 위.. 2020. 7. 13.
728x90