При создании объекта вернуть существующий - C#
Формулировка задачи:
Здравствуйте, уважаемые!
Есть куча файлов, из которых по мере надобности создаются объекты:
процедура создания объекта достаточно затратна, поэтому хочется кэшировать этот объект.
Для этого я просто сделал отдельный класс, в котором прописал коллекцию и команду на создание объекта, которая проверяет в коллекции и возвращает имеющийся, если есть, или создаёт новый, если это первое обращение.
Собственно вопрос, могу ли я переместить эту коллекцию в сам этот объект, чтобы он при создании сам себя искал в коллекции и если он там есть, то не создавался, а брался из коллекции.
типа такого:
myObj m = new myObj("c:\\temp\\file1.sql")
class myObj{ private static Dictionary<string,myObj> dic=new Dictionary<string,myObj> () public myObj(){ myObj rp; if (dic.ContainsKey(Id)) { rp = dic[Id]; } else { rp=new myObj(Id); dic.Add(Id, rp); } return rp; } }
Решение задачи: «При создании объекта вернуть существующий»
textual
Листинг программы
class myObj { private static Dictionary<string, myObj> dic = new Dictionary<string, myObj>(); private myObj(string Id) { } public static myObj Create(string Id) { myObj rp; if (dic.TryGetValue(Id, out rp)) return rp; rp = new myObj(Id); dic.Add(Id, rp); return rp; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д