Возвращение массива объектов из функции stati c - PullRequest
0 голосов
/ 08 апреля 2020

Я делаю базовый c проект Visual Studio. Самый простой способ объяснить это - показать код.

using System;
using System.Collections.Generic;

namespace testing
{
    class Program
    {
        static void Main(string[] args)
        {

            int amountOfCars = getAmountOfCars();
            Car[] myCars = createCars(amountOfCars);

        }

        public static int getAmountOfCars (){
            Console.WriteLine("Amount of Cars to enter");
            int amountOfCars = Convert.ToInt32(Console.ReadLine());
            return amountOfCars;
        }


        public static Car createCars(int amountOfCars)

        {
            Car[] myCars = new Car[amountOfCars];
            for (int i = 0; i < amountOfCars; i++)
            {
                Console.WriteLine("Enter brand");
                string brand = Convert.ToString(Console.ReadLine());

                Console.WriteLine("Enter amount of wheels");
                int amountOfWheels = Convert.ToInt32(Console.ReadLine());

                Console.WriteLine("Enter amount of seats");
                int amountOfSeats = Convert.ToInt32(Console.ReadLine());

                myCars[i] = new Car(brand, amountOfWheels, amountOfSeats);
            }
            return myCars[amountOfCars];

        }
    }
}

Эта строка

 Car[] myCars = createCars(amountOfCars);

Выдает следующую ошибку:

Невозможно неявно преобразовать проверку типов. Автомобиль для тестирования. Автомобиль []

Итак, я попытался преобразовать его в

 Car[] myCars = (Car[]) createCars(amountOfCars);

Но все равно выдает ошибку.

По сути, я просто пытаюсь вернуть array из objects из функции createcar, чтобы ее можно было использовать в остальной части кода.

Как лучше всего это решить?

Ответы [ 2 ]

5 голосов
/ 08 апреля 2020

Вам необходимо вернуть массив из createCars ():

public static Car[] createCars(int amountOfCars)

    {
        Car[] myCars = new Car[amountOfCars];
        for (int i = 0; i < amountOfCars; i++)
        {
            Console.WriteLine("Enter brand");
            string brand = Convert.ToString(Console.ReadLine());

            Console.WriteLine("Enter amount of wheels");
            int amountOfWheels = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Enter amount of seats");
            int amountOfSeats = Convert.ToInt32(Console.ReadLine());

            myCars[i] = new Car(brand, amountOfWheels, amountOfSeats);
        }
        return myCars;

    }
3 голосов
/ 08 апреля 2020

Сигнатура функции

public static Car createCars(int amountOfCars)

вместо

public static Car[] createCars(int amountOfCars)

Также возвращает только массив

return myCars;

вместо

return myCars[amountOfCars]; // This returns only one object at the amountOfCars index in the myCars array. 

Кроме того, это вызовет ArrayIndexOutOfBoundsException, поскольку myCars выделено для amountOfCars и диапазонов массива от myCars[0] до myCars[amountOfCars-1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...