Q. C#에서 객체가 사라지는 타이밍?

A. 객체가 사용(호출)이 되지 않을때 GC(가비지컬렉터)에서 제거를 함

C/C++과는 다르게 C#은 객체를 만들면 프로그래머가 따로 건드리지 않아도 사용되지 않으면 자동으로 제거된다고한다.

 

Q. 직렬화 와 역직렬화의 차이점?

A.

직렬화 : 외부에서 들어온 데이터를 코드영역 안에서 사용할 수 있게 변환하는것

역직렬화 : 코드영역에 있는 데이터를 외부로 꺼낼수 있게 변환하는것

 

Q. .csv 와 .json의 공통점,차이점 ?

A.

공통점 : 외부에서 관리되는 데이터 파일형들

차이점 :

.csv는 ( , ) 로 문자열을 구분하여 데이터를 관리함 , csv는 엑셀 파일로 셀 한칸마다 데이터 칸이기에 

.json은 배열,colletion 에 있는 구조들을 구체화 하여 관리에 능동적임

 

C# System.Text 에 속한 Json 패키지

using System.Text.Json;
using System.Text.Json.Serialization;
 
 // 1. 객체를 생성하고 JSON으로 직렬화하여 파일에 저장
 List<Quest> quests = new List<Quest>
 {
     new Quest("퀘스트1"),
     new Quest("퀘스트2"),
     new Quest("퀘스트3")
 };

 // 2. 리스트를 JSON 문자열로 직렬화
 string jsonString = JsonSerializer.Serialize(quests, new JsonSerializerOptions { WriteIndented =true});

 //3. 파일 경로 설정
 string filePath = "Quest.json";

 //4. JSON 문자열을 파일로 저장
 File.WriteAllText(filePath, jsonString);
 Console.WriteLine($"Serialized JSON list saved to {filePath}");

 // 5. JSON 파일을 읽어와서 리스트로 역직렬화
 if (File.Exists(filePath))
 {
     string loadedJsonString = File.ReadAllText(filePath);
     List<Quest> loadedQuest = JsonSerializer.Deserialize<List<Quest>>(loadedJsonString);

     //6. 역직렬화된 리스트 출력
     foreach (Quest quest in loadedQuest)
     {
         Console.WriteLine($"Loaded Quest: Label = {quest.Label}, Detail = {quest.Detail}, Finish = {quest.IsFinish}");
     }

 }

 

+ Recent posts