Передача параметра через делегат - C#
Формулировка задачи:
Есть код создания солнечной системы, основную работу делает Библиотека <стринг, метод> в ней проверяется, содержит ли очередной стринг коллекции стрингов ssData ключевое слово, и если содержит, то запускается соответствующий метод, создать звезду, планету или спутник планеты. И было бы хорошо не использовать глобальную переменную для счётчика, а передавать счётчик i через эту библиотеку в метод. Как это можно сделать?
public void FillDictionary() { keywordhandlers.Add(DAL.KeyWords.STAR, () => CreateStar()); keywordhandlers.Add(DAL.KeyWords.PLANET, () => CreatePlanet()); keywordhandlers.Add(DAL.KeyWords.MOON, () => CreateMoon()); } public void SearchKeyWords() { for (i = 0; i < ssData.Count; i++) { line = ssData[i]; foreach (KeyValuePair<string, Action> para in keywordhandlers) { if (line.Contains(para.Key)) { para.Value(); } } } } public void CreateStar() { name = SetName(); diameter = SetDiameter(); mass = SetMass(); temperature = SetTemperature(); Stars.Add(new Star(name, mass, diameter, temperature)); }
Решение задачи: «Передача параметра через делегат»
textual
Листинг программы
public void FillDictionary() { keywordhandlers.Add(DAL.KeyWords.STAR, (x) => CreateStar(x)); keywordhandlers.Add(DAL.KeyWords.PLANET, (x) => CreatePlanet(x)); keywordhandlers.Add(DAL.KeyWords.MOON, (x) => CreateMoon(x)); } public void SearchKeyWords() { for (i = 0; i < ssData.Count; i++) { line = ssData[i]; foreach (KeyValuePair<string, Action<int>> para in keywordhandlers) { if (line.Contains(para.Key)) { para.Value(i); } } } } public void CreateStar(int x) { name = SetName(); diameter = SetDiameter(); mass = SetMass(); temperature = SetTemperature(); Stars.Add(new Star(name, mass, diameter, temperature)); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д