#c_sharp #оптимизация
Встал передо мной вопрос об оптимизации своего кода.
у меня много подобных строчек
GenerateCar(car2, bestWay);
GettingBest(moneyChange, car2, propuski, bestWay);
GenerateCar(car3, bestWay);
GettingBest(moneyChange, car3, propuski, bestWay);
GenerateCar(car4, bestWay);
GettingBest(moneyChange, car4, propuski, bestWay);
Я невероятно хочу запихнуть это дело в цикл и написать GenerateCar(car+i, bestWay),но
видимо так не принято в С#.В этой и вопрос,как это делается?
и второй вопрос,про конструкторы.
int[] car0 = {0,0,0,0,0,0,0,0,0,0};
int[] car1 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car2 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car3 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car4 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car5 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car6 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car7 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car8 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] car9 = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
это режет глаза.) конструктор ругается от такого кода:
class Car
{
int[] massivchik;
public Car()
{
this.massivchik = massivchik;
}
}
не работает,в общем подскажите а как бы вы заменили эти тексты с массивами?
Ответы
Ответ 1
Заместо кучи массивов carN вам было бы неплохо завести список массивов cars: // объявление Listcars = new List (); // инициализация for (int i = 0; i < количествоМашин; i++) cars.Add(new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }); // генерация for (int i = 0; i < количествоМашин; i++) { GenerateCar(cars[i], bestWay); GettingBest(moneyChange, cars[i], propuski, bestWay); } "Компилятор ругается от такого кода:" - правильно ругается, ведь вы пытаетесь приравнять неинициализированное поле класса к самому себе. class Car { int[] massivchik; public Car() { // в этот момент времени massivchik = null this.massivchik = massivchik; } } Конструктор надо переделать в один из двух вариантов: public Car() { array = new int[заранееИзвестнаяПостояннаяДлинаМассива]; } либо public Car(int[] array) { this.array = array; } И да, пожалуйста, переименуйте переменные в что-нибудь достойное. :) Приятно, конечно, что сейчас они носят исконно-русские названия, но вы же не на ЯП 1С пишете. Ответ 2
Ваш код можно переписать вот так var cars = Enumerable.Range(0, 10) .Select(x=>Enumerable.Range(0,10) .ToArray()) .ToArray(); foreach(var car in cars) { GenerateCar(car, bestWay); GettingBest(moneyChange, car, propuski, bestWay); }
Комментариев нет:
Отправить комментарий