using System.Diagnostics;
using System.Collections.Generic;
using Microsoft.Extensions.Caching.Memory;
using System.Collections.Concurrent;
SubItems = new List<SubItem>();
public List<SubItem> SubItems {get;set;}
public string Name {get;set;}
public static void Main(string[] args)
var subItemModels = new ConcurrentDictionary<int, SubItem>();
var myCache = new MemoryCache(new MemoryCacheOptions());
var subItem = new SubItem
subItemModels.AddOrUpdate(subItem.Id, subItem, (key, oldValue) => subItem);
Console.WriteLine($"ConcurrentDictionary : {subItemModels.First().Value.Name}");
var mainObject = new TestMemory();
mainObject.SubItems.Add(subItem);
Console.WriteLine($"Main Object : {mainObject.SubItems.First().Name}");
Console.WriteLine($"Edit ConcurrentDictionary Object : {mainObject.SubItems.First().Name} -> SubItem B");
subItemModels.First().Value.Name = "SubItem B";
Console.WriteLine($"Main Object : {mainObject.SubItems.First().Name}");
Console.WriteLine($"ConcurrentDictionary Object : {subItemModels.First().Value.Name}");