![[C#] StreamWriter와 StreamReader](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9UAbx%2FbtsGuIEWZ6s%2FMEk3b4dl48PqJsUPQHBvk1%2Fimg.jpg)
StreamWriter와 StreamReader우리는 C#에서 파일을 읽고 쓰기 위한 스트림으로 StreamReader와 StreamWriter를 사용할 수 있다.File 클래스도 있긴 하지만 읽고 쓸 땐 StreamReader와 StreamWriter을 더 많이 사용한다이 클래스들은 System.IO 네임스페이스에 선언되어 있으므로 사용하기 위해서는 System.IO를 using 해줘야 한다.(C# - 유니티예제) Stream Writer : 파일 쓰기( ) 부분에는 파일에 대한 절대 경로가 들어간다.WriteLine은 한 줄씩 쓰는 것이다.숫자도 가능하다.Stream Writer는 열었으면 무조건 닫아줘야 한다. 따라서 Close()를 반드시 콜 해줘야 한다. 그렇게 하지 않으면, 파일이 열린 상태로..
![[C#] 박싱(Boxing), 언박싱(Unboxing)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIoopE%2FbtsGu2aUyag%2F0EAMZk7d21bwOfa7ORtQj1%2Fimg.jpg)
박싱(Boxing) 이란?값 형식의 데이터를 참조 형식으로 변환하는 것이다.항상 할당과 복사를 하기 때문에 Overhead를 초래할 가능성이 있다.123int a = 10; (값형식) Object b = a; (참조형식)cs 12345678910111213Listobject> list = new Listobject>(); list.Add("First"); // String도 참조형식이기 때문에 Boxing은 일어나지 않는다. for (int i = 1; i 5; i++) list.Add(i); // Boxing : i는 int형이기 때문에 object로 변환한 것이기 때문에 Boxing이 일어난다 list.Add("Second"); for (int i = 5; i 10; i++) ..
![[C#] 구조체 (Struct)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRjtOT%2FbtsGrTfuBMr%2FyGecMRPxx0n5RKWrxtlkx0%2Fimg.jpg)
구조체(Struct) 란?구조체는 사용자 정의 데이터 유형(Data Type)으로 int, double 등과 같은 기본적으로 제공되는 변수 유형이 아닌 새로운 유형, 여러가지 유형을 사용하기위해 사용자가 직접 만들어 사용하는 것이다.C#에서 구조체는 일반 변수와 같이 값 형식의 데이터 형식이다.구조체(Struct) 정의하기구조체를 정의하려면 struct 문을 사용한다struct문은 두 개 이상의 멤버가 있는 새로운 데이터 형식을 정의한다.예를들어, 'Angle'이라는 변수를 만들려고할 때 필요한 멤버들은 degress, minutes, second 가 있다.이를 Student 구조체로 만드는 방법은 다음과 같다.123456public struct Angle{ private int degrees; ..
![[C#] Thread(스레드)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgQxag%2FbtsGsWbFEw8%2FGxQvmpMFxAqyBktBATQMKk%2Fimg.jpg)
★KEYWORD★프로레스 내에서 실행되는 흐름의 단위 / 멀티스레드 / 작업 동시 처리Thread(스레드) 란?어떠한 프로그램 내에서, 특히 프로세스(컴퓨터에서 실행되고 있는 컴퓨터 프로그램) 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.특히 게임 서버쪽에서는 멀티스레드가 중요한데, 각 플레이어의 액션, 게임 내의 이벤트, 데이터 동기화 등 다양한 작업들을 동시에 처리해야 하기 때문이다. 게임 엔진 스레드- Update (GameLogic Thread [게임 로직을 처리하기 위함])유니티 업데이트 함수 / 계속 처리될 거- R..
![[C#] 직렬화 & 역직렬화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl9azu%2FbtsGqIYVV3S%2FQKcQKvVH0UkQu9bhDGFVP1%2Fimg.jpg)
★KEYWORD★객체를 파일의 형태 등으로 저장하거나 통신하기 쉬운 포맷으로 변환하는 과정, Serilalization, 마샬링, 역직렬화, Txt, Bin직렬화 (Serialization)컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다. 오브젝트를 직렬화하는 과정은 오브젝트를 마샬링(참고 : https://lake0989.tistory.com/125)한다고도 한다. 반대로 일련의 바이트로부터 데이터 구조를 추출하는 일은 역직렬화(Deserialization)이라고 한다. ➡️직렬화는 객체를 파일의 형태 등으로 저장하거나,..
![[C#] 마샬링 (Marshalling)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEbzze%2FbtsGqQP9chL%2F9JLfdYwV0jIaPYPdwU1qxK%2Fimg.jpg)
★KEYWORD★형식이 다른경우에 형식에 맞춰서 직렬화를 하기위한 기술 (직렬화 하기 전에 실행)마샬링이란?마샬링이란 한 객체의 메모리에서의 표현방식을 저장 또한 전송에 적합한 다른 데이터 형식으로 변환하는 과정이다. 이는 데이터를 서로 다른 프로그램간에 전달할 필요가 있을 경우 사용한다.즉, 이는 직렬화와 유사하며 직렬화된 한 객체로, 멀리 떨어진 객체와 통신하기 위해 사용한다.이렇듯 복잡한 통신을 단순화하여 쉽게 데이터를 주고받을 수 있도록 해주는 것이 마샬링이다.여기에는 고수준 프로그래밍 언어 형식의 데이터를 저수준 이진 표현으로 변환하거나 한 프로그래밍 언어의 데이터 구조에서 다른 언어의 데이터 구조로 변환하는 작업이 포함될 수 있다. 컴퓨터 과학에서 마샬링 컴퓨터 과학에서 마샬링은 일반적으로 분..