Обновление: мой оригинальный ответ был опубликован до того, как стало ясно, что myArray - это многомерный массив. Учитывая это, я согласен с Вечной, которая также правильно указала, что использование цикла for-each позволит вам получить само целое число вместо ссылки на него по индексу.
Исходный ответ: Похоже, что вы изменили что-то еще, когда преобразовали циклы for.
Выражение myArray [a] [b] было бы допустимым, если бы myArray был многомерным массивом. Проблема в том, что вы пытаетесь получить доступ к двумерному массиву, когда сам массив одномерный.
Если вы пытаетесь умножить записи в точках a и b, вам нужно сделать следующее:
p = p + myArray[a] * myArray[b];
или условно:
p += myArray[a] * myArray[b];
Я видел несколько способов сделать это.
Наиболее распространенный способ состоит в том, чтобы использовать внедрение зависимости для введения репозиториев в объекты, которые используют их. Обычно это предъявитель или классы контроллера, но в некоторых случаях образцовые вызовы в репозиторий. Обычно лучше при предотвращении этого. Если можно использовать di-контейнер, чтобы сделать, это затем идет для него.
Можно также заставить репозитории реализовать шаблон "одиночка". Я старался бы избегать этого, потому что одиночные элементы обычно используют статические методы. Это может сделать тестирование кода, который звонит в одиночные элементы более трудный. Если необходимо сделать вещи, этот путь затем удостоверяется, что Вы выделяете код, который называет одиночный элемент, и используйте "ручное" внедрение зависимости для введения одиночных элементов в классы, которые называют их. Это избавляется от части плотного соединения, которое Вы иначе получили бы.
Я видел некоторые примеры, где репозитории никогда не называют. Когда кто-то перемещается по графу объектов в модели и запрашивает объект, который не загружается, модель просто генерирует событие, и репозиторий реагирует на это событие. Таким образом, там не являются никакие вызовы в репозиторий, и он полностью отделяется из модели. Я havn't использовал эту архитектуру сам, но это кажется очень чистым.
Используйте свой контейнер внедрения зависимости для решения, как и где репозитории создаются.
При помощи
UserRepository.Instance.Find(userId);
Вы создаете барьер для тестирования.
Если Ваши репозитории передаются на службы с помощью Инжекции Конструктора, то можно также легко заменить их насмешками.
Я не уверен в этом, и у меня есть та же проблема. Я думаю, что необходимо сделать репозиторий одиночным элементом, когда объекты, с которыми он работает, часто используются. И это, это не должно быть сделано одиночным элементом при использовании объектов, с которыми это работает редко, потому что репозиторий взял бы большую память для объектов и возможно это назовут только однажды и никогда снова во время использования приложения. Как я сказал, это не может быть корректными взглядами.