본문 바로가기
728x90

개발/C# 10

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.
Delegate - 델리게이트 1. Delegate란 무엇인가? (이하 델리게이트) 처음 델리게이트를 접했을 땐, 왜 쓰는지도 잘 이해가 안 됐고 단어 자체도 낯설었다. 그럼 그 사용을 한번 알아가보자. 사전에는 어떤 사람이나 그룹을 대신하는 사람이라고 한다. 쉽게 말해 대리인. 대표. 단어 뜻에서 접근하면, 델리게이트란 어떤 것을 대리해주는 느낌이다. 그렇다. 결론부터 말하자면, 델리게이트란 C#에서 메소드를 대신해서 호출한다. (메소드의 대리) 이게 무슨 말인가? 델리게이트가 없으면 메소드를 직접 호출해서 사용하지만, 델리게이트를 사용하면 메소드를 델리게이트를 호출하면서 사용할 수 있다. 역시 설명은 어렵고 예제를 보자. 2. 델리게이트 사용방법 ① 호출할 메소드와 같은 타입의 델리게이트를 먼저 선언해야한다. ② 델리게이트를 선언.. 2020. 7. 11.
Property - 프로퍼티 기존에 Java로 공부를 하다가 C#을 봤는데 매우 흥미로운 기능이 있어서 소개해볼까 한다. 제목에 쓴 property라는 것이다. 프로퍼티란 C#에서 쓰는 메소드인데 쉽게 말하자면, getter와 setter를 가진 변수? 라고 할 수 있겠다. 이것도 어렵다. 그러니까 프로퍼티는 멤버변수(속성) + getter/setter 이다. 흥미를 느낀 이유는 프로퍼티를 사용하면 코드가 매우 간결해진다. 아래 예제를 보여주겠다. 먼저, Person이라는 클래스를 자바로 표현해봤다. 물론, 에디터에서 getter/setter를 간소화해서 보여주는 기능도 있고 자동 생성해주는 기능도 있으나, 뭔가 길다. public class JavaPerson { private int personId; private string .. 2020. 7. 9.
728x90