본문 바로가기
반응형

유니티 공부/C# 문법48

C# 문법 - this 키워드 1. this 키워드 weight는 생성자에서 받은 weight이 아니라 내 자신의 weight이므로 이를 명시하기 위해 this를 사용한다. static void Main(string[] args) { Pig pig = new Pig(50); } 2. this 키워드를 이용해서 생성자 호출 this()는 생성자를 특정해서 먼저 실행시켜준다. public Pig(int weight) : this() static void Main(string[] args) { Pig pig = new Pig(50); } public Pig(int weight, string name) : this(weight) static void Main(string[] args) { Pig pig = new Pig(50,"pig"); .. 2023. 4. 11.
C# 문법 - 생성자 1. 생성자 생성자 이름은 클래스 이름과 같아야 한다. 반환하는 타입을 아무것도 지정해주면 안된다. class Pig { public string name; public int weight; public Pig() { name = "piggy"; weight = 100; Console.WriteLine("생성자 호출!"); } } 2. 생성자 사용 클래스 또는 구조체가 인스턴스화되면 생성자가 호출된다. new연산자를 사용하면 클래스를 인스턴스화 한다. 새 개체에 메모리가 할당된 후 new 연산자가 생성자를 호출한다. static void Main(string[] args) { Pig pig = new Pig(); } 본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다. https://www.i.. 2023. 4. 11.
C# 문법 - 스택과 힙 Stack 메모리 굉장히 불안정하고 임시적으로 사용는 메모리 함수를 호출 할때 임시 값을 넣어 연산을하고 함수가 종료되면 더 이상 사용을 안하게 된다. 함수를 실행하기 위한 메모장이라고 생각하면 된다. 함수를 실행하기 위해 안에 있는 모든 내용은 스택에 저장된다. stack 공간은 함수가 호출되면 늘어나고 종료되면 알아서 줄어든다. ex) main 함수 안의 변수 Heap 메모리 메모리가 동적 할당 되므로 그때 그때 필요할 때 메모리를 할당 받아 사용된다. 메모리를 할당을 했으면 함수가 종료돼도 메모리에 할당되어져있으므로 메모리를 반드시 해제해야 한다. ex) class 객체, new로 생성된 객체 본 게시글은 MMORPG Part1을 수강하고 정리한 글입니다. https://www.inflearn.co.. 2023. 4. 11.
C# 문법 - 복사(값)와 참조 1. 복사(값) // Copy 복사 struct Mage { public int hp; public int attack; } 구조체의 값은 스택(stack)에 할당된다. static void KillMage(Mage mage) { mage.hp = 0; } Mage mage; mage.hp = 100; mage.attack = 50; KillMage(mage); Console.WriteLine(mage.hp); mage의 복사값을 killMage에 보내줬기 때문에 mage.hp가 100인 것은 변하지 않는다. Mage mage2 = mage; mage2.hp = 0; Console.WriteLine($"mage 값 : {mage2.hp}"); mage와 mage2는 별도의 마법사이다. 2. 참조 // R.. 2023. 4. 10.
C# 문법 - Generic, Generic Constraints, Where 1. Generic 제네릭 타입에서는 데이터 형식을 확정하지 않고 데이터 타입 자체를 Type Parameter로 정의한다. 일반적으로 로 작성한다. // Generic class -> T안에 어떤 타입을 넣어도 작동된다. class MyList { T[] arr = new T[10]; public T GetItem(int i) { return arr[i]; } } static void Test(T input) { } 제네릭 타입을 사용할 때는 클래스명과 데이터 타입을 지정해주면서 사용하면 된다. static void Main(string[] args) { Test(3); Test(3.0f); } 2. Generic Constraints Where이란? 특정 조건에만 대응되는 데이터 타입이 필요한 경우 .. 2023. 4. 10.
C# 문법 - Object(박싱과 언박싱) Object 데이터 타입 모든 데이터 타입의 조상이다. 그러므로 값 형식 (int short) 및 참조 형식(struct, class)등이 Object의 상속 받는다. 그러므로 Object는 데이터 타입의 제한이 없으므로 편리하게 사용할 수 있다. 하지만 Object는 참조 타입으로 실행이 되기 때문에 무분별하게 사용하게 되면 메모리 낭비가 발생하게 된다. 01 boxing 쉽게 택배로 예를 들어보자 만약 유리병을 택배로 보내고 싶으면 유리병을 택배로 포장하고 택배 회사로 보내게된다. 여기에서 유리병은 값타입, 택배 포장은 참조타입으로 포장(박싱), 택배회사에 보냄은 참조 타입만 받는 매개변수에 전달이다. 값 형식을 object를 통해서 참조 형식으로 변환 // boxing int p = 123; // .. 2023. 4. 10.
반응형