【发布时间】:2020-07-20 17:26:48
【问题描述】:
我正在制作一个基本 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);
抛出以下错误:
无法将 testing.Car 类型隐式转换为 testing.Car[]
所以,我然后尝试这个来转换
Car[] myCars = (Car[]) createCars(amountOfCars);
但它仍然会抛出错误。
基本上我只是想从createcar 函数返回objects 的array,以便它可以在其余代码中使用。
解决这个问题的最佳做法是什么?
【问题讨论】:
-
Car createCars(返回单个Car,而不是数组 -
那么如何让它返回一个数组?
-
说实话,我很惊讶它没有抛出
IndexOutOfRangeException。return myCars[amountOfCars];,因为看起来你似乎有一个“off by one”错误。数组中的最后一个元素是myCars[amountOfCars-1]; -
@phuzi 如果编译它会抛出异常......
-
@phuzi 不是因为只有在运行代码时才会发生这种情况,而是因为类型不匹配,目前它甚至无法编译。