ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C#] C# Collection | Immutable Collection
    C#(asp.net | asp.net core) 2021. 8. 11. 17:37
    728x90
    728x90
    Hashtable arr5 = new();
    arr5["aaa"] = 111;
    arr5["bbb"] = 222;
    arr5["ccc"] = 333;
    
    foreach (DictionaryEntry kkk in arr5) WriteLine($"Key : {kkk}, Value:{kkk.Value}");
    WriteLine();
    
    
    // ----------------------------------------
    Dictionary<string, int> arr6 = new();
    arr6["aaa"] = 111;
    arr6["bbb"] = 222;
    arr6["ccc"] = 333;
    
    foreach (var kkk in arr6) WriteLine($"Key : {kkk}, Value:{kkk.Value}");
    WriteLine();
    
    
    // --------------- C# 6.0 이후 -----------------
    // constructor call(데이터가 많을 때 효율적)
    Dictionary<string, int> arr7 = new Dictionary<string, int>()
    {
        ["aaa"] = 111,
        ["bbb"] = 222,
        ["ccc"] = 333
    };
    
    foreach (var kkk in arr7) WriteLine($"Key : {kkk}, Value:{kkk.Value}");
    WriteLine();
    
    
    // --------------- C# 8.0 이후 -----------------
    var arr8 = JsonSerializer.Serialize(arr7);
    WriteLine(arr8);
    
    // real-time-call (사용할 때)
    var arr9 = JsonSerializer.Deserialize<Dictionary<string, int>>(arr8);
    foreach (var kkk in arr9) WriteLine($"Key : {kkk}, Value:{kkk.Value}");
    WriteLine();

     

     

     

    한번 정의한 Collection을 수정하고 싶지 않을 때 

    Immutable Collection을 사용하면 된다

    IReadOnlyList<int> arr3 = (new List<int> { 1, 2, 3, 4, 5, }).ToImmutableList<int>();
    
    // readOnlyList 에 Add 기능을 사용할 수 없다
    // arr3.Add(6);
    WriteLine($"arr2.size : {arr2.Count}");
    
    foreach (var kkk in arr2) Write($"   {kkk}");
    WriteLine();
    
    IReadOnlyDictionary<int, string> dic3 = (new Dictionary<int, string>
    {
        { 1, "aaa" },
        { 2, "bbb" },
        { 3, "ccc" },
        { 4, "ddd" },
        { 5, "eee" },
    }).ToImmutableDictionary<int, string>();
    foreach (var kkk in dic2) WriteLine($"key : {kkk.Key}, Value : {kkk.Value}");

     

     

     

    728x90
    728x90
Designed by Tistory.