Передача параметра через делегат - C#

Узнай цену своей работы

Формулировка задачи:

Есть код создания солнечной системы, основную работу делает Библиотека <стринг, метод> в ней проверяется, содержит ли очередной стринг коллекции стрингов ssData ключевое слово, и если содержит, то запускается соответствующий метод, создать звезду, планету или спутник планеты. И было бы хорошо не использовать глобальную переменную для счётчика, а передавать счётчик i через эту библиотеку в метод. Как это можно сделать?
Листинг программы
  1. public void FillDictionary()
  2. {
  3. keywordhandlers.Add(DAL.KeyWords.STAR, () => CreateStar());
  4. keywordhandlers.Add(DAL.KeyWords.PLANET, () => CreatePlanet());
  5. keywordhandlers.Add(DAL.KeyWords.MOON, () => CreateMoon());
  6. }
  7. public void SearchKeyWords()
  8. {
  9. for (i = 0; i < ssData.Count; i++)
  10. {
  11. line = ssData[i];
  12. foreach (KeyValuePair<string, Action> para in keywordhandlers)
  13. {
  14. if (line.Contains(para.Key))
  15. {
  16. para.Value();
  17. }
  18. }
  19. }
  20. }
  21. public void CreateStar()
  22. {
  23. name = SetName();
  24. diameter = SetDiameter();
  25. mass = SetMass();
  26. temperature = SetTemperature();
  27. Stars.Add(new Star(name, mass, diameter, temperature));
  28. }

Решение задачи: «Передача параметра через делегат»

textual
Листинг программы
  1.   public void FillDictionary()
  2.         {
  3.             keywordhandlers.Add(DAL.KeyWords.STAR, (x) => CreateStar(x));
  4.             keywordhandlers.Add(DAL.KeyWords.PLANET, (x) => CreatePlanet(x));
  5.             keywordhandlers.Add(DAL.KeyWords.MOON, (x) => CreateMoon(x));
  6.         }
  7.         public void SearchKeyWords()
  8.         {
  9.             for (i = 0; i < ssData.Count; i++)
  10.             {
  11.                 line = ssData[i];
  12.                 foreach (KeyValuePair<string, Action<int>> para in keywordhandlers)
  13.                 {
  14.                     if (line.Contains(para.Key))
  15.                     {
  16.                         para.Value(i);
  17.                     }  
  18.                 }
  19.             }
  20.         }
  21.  
  22.         public void CreateStar(int x)
  23.         {
  24.             name = SetName();
  25.             diameter = SetDiameter();
  26.             mass = SetMass();
  27.             temperature = SetTemperature();
  28.          
  29.             Stars.Add(new Star(name, mass, diameter, temperature));
  30.         }

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


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

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

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы