Enum
·
⭐C Sharp/📌문법 사전
📌Enum ( 열거형 )의미 있는 이름으로 상수값들을 묶어 관리하는 사용자 정의 자료형// 기본 형태enum 열거형이름{ 항목1, 항목2, 항목3}// 사용 예시enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }Day today = Day.Monday;Console.WriteLine(today); // 출력: MondayConsole.WriteLine((int)today); // 출력: 1 (기본값 0부터 시작)enum Level{ Easy = 1, Normal = 3, Hard = 5}⚠️ 주의enum 의 기본 자료형은 int ( 0 부터 시작 )필요하면 : byte : ..
Array
·
⭐C Sharp/📌문법 사전
📌Array ( 배열 )같은 자료형의 데이터를 하나의 이름으로 묶어서 관리하는 자료구조// 1. 배열 선언자료형[] 배열이름;// 2. 배열 생성 (크기 지정)배열이름 = new 자료형[크기];// 3. 선언과 동시에 생성자료형[] 배열이름 = new 자료형[크기];// 4. 초기화와 동시에 선언자료형[] 배열이름 = { 값1, 값2, 값3 };// 5. 값 접근배열이름[인덱스] = 값;Console.WriteLine(배열이름[인덱스]);⚠️ 주의인덱스는 0 부터 시작배열의 크기는 한번 정하면 변경 불가능존재하지 않는 인덱스에 접근하면 IndexOutOfRangeException 발생배열의 길이는 배열이름.Length 로 확인 가능참조형 ( reference type ) 이므로 new 로 생성 시 힙 ..
값형 ( Value ) vs 참조형 ( Reference )
·
⭐C Sharp/01. 변수
값형 ( Value Type ) vs 참조형 ( Reference Type )1. 값형 ( Value Type )실제 값 자체를 저장하는 타입대표 예시 : int , float , bool , char , struct , enum 등저장 위치 : 스택 ( Stack )특징 : 변수 간 복사시 값이 복제된다.└ 서로 다른 메모리를 가진다 → 한쪽을 변경해도 다른 쪽에 영향이 없다.▼예시 코드int a = 10;int b = a;b = 20;Console.WriteLine(a); // 10a 와 b 는 서로 다른 공간에 저장되어 있다. 2. 참조형 ( Reference Type )데이터의 위치 ( 주소 ) 를 저장하는 타입실제 데이터는 힙 ( Heap )에 저장되고 , 변수는 그 위치를 참조한다.대표 예시..
변수의 선언 위치와 수명
·
⭐C Sharp/01. 변수
변수의 범위 ( Scope )변수가 유효하게 접근 가능한 코드의 범위를 말한다.어디서부터 어디까지 이 변수를 사용할수 있는지를 결정하는 구역이다.지역 변수 ( Local Variable )void PrintNumber(){ int number = 10; // 지역 변수 Console.WriteLine(number);}선언 위치 : 메서드 , if 문 , for 문 등 블록 { } 내부메모리 위치 : 스택 ( Stack )생명 주기 : 블록이 끝날 때 자동 소멸된다.특징 : 선언된 블록 안에서만 접근 가능 , 다른 메서드에서는 사용할 수 없다. ▼예시 코드void Test(){ int a = 5; if (true) { int b = 10; Console..
Component
·
🧊Unity Basic/게임오브젝트
컴포넌트 ( Component )컴포넌트 ( Component ) 는 유니티에서 GameObject 에 기능을 부여하는 스크립트나 요소를 말한다.GameObject 는 껍데기 ( 오브젝트 ) 이고 , 컴포넌트는 그 오브젝트의 능력이나 속성을 부여한다. 예시로 자동차를 만든다고 가정해보자GameObject : 자동차Transform : 위치와 회전 , 크기Rigidbody : 물리 효과 ( 중력 , 질량 등 )Collider : 충돌 감지AudioSource : 소리 재생Script ( MonoBehaviour ) : 움직이는 로직이렇게 여러 컴포넌트가 합쳐져서 하나의 오브젝트가 완성된다. 작동 원리모든 GameObject 는 기본적으로 Transform 컴포넌트를 가지고 있다.나머지는 개발자가 추가 (..
스택 ( Stack )
·
⭐C Sharp/메모리 관리
스택 ( Stack )스택 영역은 프로그램이 실행될 때 함수의 호출과 지역 변수 관리를 담당하는 정적 ( static ) 메모리 공간이다.프로그램 실행 중에 함수가 호출될 때 자동으로 할당되고, 함수가 종료되면 자동으로 해제되는 임시 저장소이다.Stack 은 메모리를 LIFO ( Last - In , First - Out 후입선출 ) 방식으로 관리한다.가장 나중에 들어온 함수나 변수가 가장 먼저 제거된다는 뜻이다.함수가 중첩 호출될 때 ( Stack Frame 이 쌓일 때 ) , 각 함수의 지역 변수나 매개변수는 이 Stack 에 차곡차곡 쌓인다. 작동 원리프로그램이 실행되면, 운영체제는 프로세스마다 Stack 영역을 일정 크기로 미리 할당한다.함수가 호출될 때마다 Stack 에 Stack Frame ..
힙 ( Heap )
·
⭐C Sharp/메모리 관리
메모리 구조 힙 ( Heap )힙 ( Heap ) 영역은 프로그램이 실행되는 동안 동적으로 생성되는 데이터 ( 객체 , 배열 등 ) 를 저장하는 메모리 공간이다.이 영역은 컴파일 시점 ( Compile )이 아니라, 실행 시점 ( Runtime )에 메모리 크기와 생명주기가 결정된다는 점이 핵심이다.다시 말해, 스택 ( Stack )과는 달리 메모리 크기가 정해져 있지 않고 프로그램이 실행되는 도중에 크기나 개수가 가변적인 데이터를 저장하기 위한 공용 저장소 역할을 하는 공간이다.C언어 같은 예전 언어들은 사용 후 반드시 개발자가 직접 해제해야 한다. 작동 원리프로그램이 실행되면 운영체제 ( OS ) 는 프로세스에 여러 영역을 나누어 메모리를 할당해준다.대표적으로 Code , Data , Stack ,..
가비지 컬렉터 ( GC )
·
⭐C Sharp/메모리 관리
가비지 컬렉터 ( Garbage Collector , GC )가비지 컬렉터는 메모리 관리 방법 중 하나로,프로그래머가 동적으로 할당한 메모리 영역 중 더 이상 쓰이지 않는 영역을 자동으로 찾아내어 해제하는 기능이다. 존 매카시 ( John McCarthy ) 가 1959년에 LISP 의 메모리 관리를 위해 처음 만들었다고 알려져 있다. 옛날의 언어들은 베이식 ( BASIC )처럼 동적인 메모리 할당 기능이 아예 없거나 C언어처럼 프로그래머가 할당한 뒤 수동으로 해제까지 해 줘야 하는 방식이었는데, 프로그래머가 하는 일이 항상 완벽할 수 없는지라 메모리를 할당해 놓고 필요 없어진 뒤에도 해제를 안 해서 메모리 누수가 발생하는 등 온갖 실수가 일어나 수 많은 버그가 양산되곤 했다. 이러한 문제를 해결하기 위..
sealed class
·
⭐C Sharp/11. 객체 지향
sealed classsealed class 는 상속을 막는 클래스이다sealed 로 선언된 클래스는 다른 클래스가 상속받을 수 없다. 문법sealed class 클래스이름{ // 멤버들...}sealed 키워드는 클래스를 봉인 ( seal ) 한다는 뜻이다주로 더 이상 확장하거나 재정의되면 안 되는 클래스를 만들 때 사용한다. ▼예시 코드sealed class Animal{ public void Speak() { Console.WriteLine("Animal sound"); }}// 오류 발생: sealed 클래스는 상속 불가class Dog : Animal{ public void Bark() { Console.WriteLine("Bow-..