[C#] ref 와 out 매개변수 한정자
프로그래밍 공부/C# 프로그래밍2022. 8. 24. 01:14[C#] ref 와 out 매개변수 한정자

두개를 많이 사용해보지 않았더라도 유니티를 사용해보셨다면 out한정자는 꽤 많이 보셨을것이다. 아마 레이캐스트를 사용할때의 매개변수로 맞은 오브젝트를 전달받아 무언가를 처리할때 가장 많이 보셨을것 같다. 하지만 주변에 있음에도 정확한 사용법과 차이를 모르고 넘어가는 경우가 있어서 정리 하려고 한다. Swap 메소드 만들어보기(Call By Value) public static void Swap(int a, int b) { int temp = a; a = b; b = temp; } 간단하게 2개의 정수값을 바꿔주는 메소드를 만들었다. static void Main(string[] args) { int A = 10; int B = 20; Console.WriteLine($"A = {A}\nB = {B}");..

[Unity_C#] Switch문 & Switch 식
프로그래밍 공부/C# 프로그래밍2022. 8. 21. 02:55[Unity_C#] Switch문 & Switch 식

요즘 C# 책을 사서 공부중인데, 생각보다 내가 모르는 부분이 정말 많다는것을 느꼈다. 책을 통해 Switch에 대해 새로 알게된 부분을 정리해보려고 한다. Switch 문 스위치문은 여러가지의 경우의 수를 한번에 판단하기 위해 많이들 써보셨을거라고 생각한다. int a = 0; switch(a) { case 0: Console.Write("a는 0입니다."); break; case 1: Console.Write("a는 1입니다."); break; default: break; } a의 값에 따라서 case로 설정해둔 조건에 의해 코드가 실행된다. 조건식은 정수와 문자열 형식 두가지만 가능하다. 데이터형식 조건 C# 7.0부터는 switch문에 데이터 형식을 조건으로 쓸 수 있다고한다. 가장 최신 유니티버..

프로그래밍 공부/C# 프로그래밍2022. 8. 11. 22:29클래스와 구조체 / 배열과 리스트 / awake와 start의 차이

클래스와 구조체의 차이 클래스 1. 참조타입이다. 2. 그렇기 때문에 Heap에 생성된다. 3. 상속이 가능하다. 4. 기본 접근 제어자는 Private 이다. 구조체 1. 값타입이다. 2. 그렇기 때문에 Stack에 생성된다. 3. 내부에서 new 연산자를 자동으로 호출하기 때문에 사용자가 할당할 필요 없다. 4. 클래스의 상속이 불가능하다.(인터페이스는 가능하다). 5. 클래스의 상속이 안되기때문에 접근지정자 Protected가 불가능하다. 6. 기본 접근제어자는 Public 이다. 어떨때 무엇을 써야할까? 마소 도큐먼트에 들어가면 간단한 문서가 있다. - 일반적으로 프레임워크의 대부분을 클래스여야 한다. 아래와 같을때 구조체를 쓰면 좋다. - 형식의 인스턴스가 작고 일반적으로 수명이 짧거나 다른개체..

가비지 컬렉터(garbage collector)
프로그래밍 공부/C# 프로그래밍2022. 8. 8. 22:24가비지 컬렉터(garbage collector)

가비지 컬렉터 가비지란 무엇일까? - 가비지란 참조자가 없는 인스턴스를 말한다.(메모리 누수) 가비지 컬렉터란? - 가비지 컬렉터는 자동 메모리 관리자 역할을 한다. - 어플의 메모리 할당 및 해제를 관리한다. 가비지 컬렉터의 이점 1. C에서는 calloc,malloc - free C++에서는 New - Delete로 메모리를 직접 할당하고 해제를 해줘야 했는데 C#에서는 가비지 컬렉터가 있기때문에 개발자들은 메모리 관리 작업을 수행하기위해 코드를 작성할 필요가 없어졌다. 실수로 할당한 메모리를 해제하지 않아 메모리 누수를 걱정 할 필요가 없고 이미 비워진 객체에 메모리를 참조하는 등의 문제점을 해결 할 수 있다. 2. 관리되는 힙에 효율적으로 개체들을 할당한다. 3. 사용되지 않는 개체를 회수, 메모..

Object 형식과 박싱 & 언박싱
프로그래밍 공부/C# 프로그래밍2022. 8. 8. 21:17Object 형식과 박싱 & 언박싱

Object 형식 - 닷넷 프레임워크의 C#은 Object형식이 존재한다. - C#은 모든 객체들이 Object를 상속받도록 되어있다. - 오브젝트 형식은 모든 닷넷 클래스의 궁극적인 기본 클래스이다. - 모든 참조형식(문자열, 배열, 클래스 , 인터페이스)와 모든 값형식(int,Boolean,char..등등)의 데이터를 참조할 수 있다. 오브젝트 형식은 상속이 암시적으로 이루어지기 때문에 따로 Object를 선언하는 클래스가 필요하지는 않다. 위에 적은것처럼 닷넷의 모든 클래스는 object의 파생 클래스이기 때문에 object로 정의된 모든 메서드는 시스템의 모든 개체에서 쓸 수 있다. 파생 클래스들은 이 메서드 중 일부를 재정의 할 수 있다. Equals - 개체 간의 비교를 지원합니다. Final..

버블정렬 알고리즘 개선하기
프로그래밍 공부/자료구조&알고리즘 공부2022. 7. 22. 15:16버블정렬 알고리즘 개선하기

기본 버전 #define swap(type,x,y) do{type t = x; x = y; y = t;} while(0) void buuble(int a[],int n) { for (int i = 0; i i; j--) if (a[j - 1] > a[j]) swap(int, a[j - 1], a[j]); } } 기본버전은 요소-1만큼 반복문이 돌아가며 한번의 반복이 끝나 i가 1이 늘어나면, 확정 된 0번 인덱스의 자리를 제외하고(j > i까지이기 때문) 나머지 자리에서의 비교,교환이 계속 이루어진다. 다시 얘기하면 뒤에 값들이 정렬이 되어있는 상태라도 계속 비교 교환을 한다는 얘기다. 알고리즘 개선 - 1 #define swap(ty..

image