Страницы

Поиск по вопросам

суббота, 11 января 2020 г.

Оптимизация однотипного кода в С#. (Аргументы и конструкторы)

#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: // объявление List cars = 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); }

Комментариев нет:

Отправить комментарий