본문 바로가기
728x90

개발 48

값형식과 참조형식 값형식과 참조형식을 알기 전에 스택(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.
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.
안드로이드 4대 컴포넌트 안드로이드에는 4대 컴포넌트라고 하는 게 있다. (component = 구성요소) 뭐 컴포넌트들에 대한 정보는 안드로이드 개발문서를 참고하고 여기선 개략적으로 얘네가 뭔지만 알아보자. 4대 컴포넌트 - Activity, Service, Broadcast Receiver, Content Provider 1. Activity 이전 글에서 설명했던 내용이다. 안드로이드 개발할 때 거의 대부분을 여기서 작업한다고 보면 된다. 2020/06/05 - [개발/안드로이드] - 안드로이드, 플랫폼, 액티비티 - Android, Platform, Activity 다시 보자면, 내가 보고 있는 앱의 화면이라고 생각되기도 한다. 하지만, Activity도 결국 클래스(객체)로 만들어져 있다. 결국 UI를 관리/제어하는 객체.. 2020. 6. 30.
728x90