Исправить ошибку IndexOutOfRange в приведенном коде - C#
Формулировка задачи:
Листинг программы
- MethodInfo[] mii = t.GetMethods();
- foreach (MethodInfo m1 in mii)
- {
- ParameterInfo[] pi = m1.GetParameters();
- if (m1.Name == "sum")
- {
- int val;
- val = (int)m1.Invoke(ReflectOb, null);
- Console.WriteLine(val);
- }
- else if ((m1.Name.CompareTo("set") == 0) && (pi[0].ParameterType==typeof(int)))
- {
- object[] ob = new object[2];
- ob[0] = 12;
- ob[1] = 18;
- m1.Invoke(ReflectOb, ob);
- }
- else if ((m1.Name.CompareTo("set") == 0) & (pi[0].ParameterType==typeof(double))) ////////////////////////////////<---Здесь вылетает ошибка из-за оператора &, почему?
- {
- Console.WriteLine("Параметр1 " + pi[0].ParameterType.Name+" Параметр 2 "+pi[0].ParameterType.Name);
- object[] ob = new object[2];
- ob[0] = 1.12;
- ob[1] = 23.4;
- m1.Invoke(ReflectOb, ob);
- }
- else if (m1.Name == "isBetween")
- {
- object[] ob = new object[1];
- ob[0] = 19;
- if ((bool)m1.Invoke(ReflectOb, ob)) Console.WriteLine(ob + "находится по середине");
- else Console.WriteLine(ob + "Находится за пределами ");
- }
- else if (m1.Name.CompareTo("show") == 0){
- m1.Invoke(ReflectOb, null);
- }
- }
- Console.ReadKey();
- }
- }
Решение задачи: «Исправить ошибку IndexOutOfRange в приведенном коде»
textual
Листинг программы
- MethodInfo[] mii = t.GetMethods();
- foreach (MethodInfo m1 in mii)
- {
- switch(m1.Name)
- {
- case "sum":
- int val;
- val = (int)m1.Invoke(ReflectOb, null);
- Console.WriteLine(val);
- break;
- case "isBetween":
- object[] ob = new object[1];
- ob[0] = 19;
- if ((bool)m1.Invoke(ReflectOb, ob)) Console.WriteLine(ob + "находится по середине");
- else Console.WriteLine(ob + "Находится за пределами ");
- break;
- case "show":
- m1.Invoke(ReflectOb, null);
- break;
- case "set":
- ParameterInfo[] pi = m1.GetParameters();
- if (pi[0].ParameterType == typeof(int))
- {
- object[] ob = new object[2];
- ob[0] = 12;
- ob[1] = 18;
- m1.Invoke(ReflectOb, ob);
- continue;
- }
- if (pi[0].ParameterType == typeof(double))
- {
- Console.WriteLine("Параметр1 " + pi[0].ParameterType.Name + " Параметр 2 " + pi[0].ParameterType.Name);
- object[] ob = new object[2];
- ob[0] = 1.12;
- ob[1] = 23.4;
- m1.Invoke(ReflectOb, ob);
- }
- break;
- default: break;
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д