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}");
}
}
'내일배움캠프_Unity_6기 > TIL(Today I Learend)' 카테고리의 다른 글
TIL : 2024-10-01(화) :: C# 문자열 변수를 enum 자료형으로 형변환하기,박싱/언박싱을 지양해야되는 이유 (0) | 2024.10.01 |
---|---|
TIL : 2024-09-30(월) :: C# .csv 외부파일 읽고 데이터 사용하기 (0) | 2024.09.30 |
TIL : 2024-09-26(목) :: GitHub 협업시 코드컨벤션 (0) | 2024.09.26 |
TIL : 2024-09-24(화) :: 정렬 알고리즘(C#구현) (0) | 2024.09.24 |
TIL : 2024-09-23(월) :: C# 외부파일(.txt)파일 경로설정/읽기/쓰기 (0) | 2024.09.23 |