При создании объекта вернуть существующий - 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;
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.5 из 5
Похожие ответы