Ваш код в целом слишком сложен и содержит слишком много переменных для того, что он должен делать.
Вы хотите, чтобы индекс первого вхождения имел наибольшее значение, поэтому нет никакой реальной причиныхранить что угодно, кроме MaxValueIndex и MaxValue.
Все остальные переменные должны быть локальными, чтобы сборщик мусора мог их утилизировать.
Что касается того, что на самом деле не так с вашим кодом, я не могувыручить, так как имена переменных меня смущают.Но вот код, который достигает цели, которую вы хотите достичь.
double[] a = { 1, 9, 9, 8, 9, 2, 2 };
var highestValueInArray = a.Max();
var arrayLength = a.Length;
for (int i = 0; i < arrayLength; i++)
{
if (a[i] == highestValueInArray)
{
Console.WriteLine(i);
break;
}
}
вместо того, чтобы вручную вычислять максимальное значение, вы можете просто использовать YourArray.Max()
, чтобы получить самое высокое значение.
затем просто выполните итерацию по нему, как обычно, но в первый раз вы break;
выйдете из цикла и вернете индекс, в котором он находится.
Я почти уверен, что есть также способ использовать FirstOrDefault в комбинациис IndexOf, но не смог заставить себя работать.