Рекурсивная функция внутри метода - C#
Формулировка задачи:
Помогите переделать
В общем, как переписать код более логично? Ну то есть мне надо, чтобы никогда ошибка не появлялась. Тут она появляется, редко...А нужно, чтобы вообще никогда.
Листинг программы
- private void Move_Click(object sender, EventArgs e)
- {
- foreach (GraphObject elem in elements)
- {
- if (elem.Selected)
- {
- Random r = new Random();
- try
- {
- elem.X = r.Next(panel1.Width);
- }
- catch (ArgumentException)
- {
- elem.X = r.Next(panel1.Width);
- }
- try
- {
- elem.Y = r.Next(panel1.Height);
- }
- catch (ArgumentException)
- {
- elem.Y = r.Next(panel1.Height);
- }
- }
- panel1.Invalidate();
- }
- }
Я их вынесла в отдельные ф-ии. Более логично нельзя?
Листинг программы
- private void GenerateMove(GraphObject el)
- {
- Random r = new Random();
- try
- {
- el.X = r.Next(panel1.Width);
- el.Y = r.Next(panel1.Width);
- }
- catch (ArgumentException)
- {
- GenerateMove(el);
- }
- }
- private void Move_Click(object sender, EventArgs e)
- {
- foreach (GraphObject elem in elements)
- {
- if (elem.Selected)
- {
- GenerateMove(elem);
- }
- panel1.Invalidate();
- }
- }
Решение задачи: «Рекурсивная функция внутри метода»
textual
Листинг программы
- private void Move_Click(object sender, EventArgs e)
- {
- Random r = new Random();
- foreach (GraphObject elem in elements)
- {
- if (elem.Selected)
- {
- for(;;)
- {
- try { elem.X = r.Next(panel1.Width); break; }
- catch (ArgumentException) { }
- }
- for(;;)
- {
- try { elem.Y = r.Next(panel1.Height); break; }
- catch (ArgumentException) { }
- }
- }
- panel1.Invalidate();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д