有人可以帮我解决2个错误吗?
在类Car 中显示:
this.persons = new Person [initialColor]; - “无法将类型'string'隐式转换为'int'”。
for(int j = 0; j< persons.Capacity; j ++) - 'System.Array'不包含'Capacity'的定义,也没有扩展方法 '容量'接受'System.Array'类型的第一个参数可以 找到(你错过了使用指令或程序集 引用?)
为什么没有问题: for(int i = 0; i< cars.Length; i ++)?但是 .Capacity 存在问题。我可以用什么而不是容量?
使用System;
public class Program
{
public static void Main()
{
Car blueCar = new Car("blue");
Garage smallGarage = new Garage(2);
Person relativePerson = new Person("relative");
smallGarage.ParkCar(blueCar, 0);
Console.WriteLine(smallGarage.Cars);
blueCar.SitPerson(relativePerson, 0);
Console.WriteLine(blueCar.Persons);
}
}
class Car
{
private Person[] persons;
public Car(string initialColor)
{
Color = initialColor;
this.persons = new Person[initialColor];
}
public string Color { get; private set; }
public void SitPerson (Person person, int seat)
{
persons[seat] = person;
}
public string Persons
{
get
{
for(int j = 0; j < persons.Capacity; j++)
{
if (persons[j] != null)
{
Console.WriteLine(String.Format("The {0} is in a {1} car.", persons[j].Type, j));
}
}
return "That's it.";
}
}
}
class Garage
{
private Car[] cars;
public Garage(int initialSize)
{
Size = initialSize;
this.cars = new Car[initialSize];
}
public int Size { get; private set; }
public void ParkCar (Car car, int spot)
{
cars[spot] = car;
}
public string Cars
{
get
{
for (int i = 0; i < cars.Length; i++)
{
if (cars[i] != null)
{
Console.WriteLine(String.Format("The {0} car is in spot {1}.", cars[i].Color, i));
}
}
return "That's all!";
}
}
}
class Person
{
public Person(string initialType)
{
Type = initialType;
}
public string Type { get; private set; }
}
}
答案 0 :(得分:1)
Capacity
因为它适用于可扩展集合,例如List<T>.Capacity
,它指的是底层数组的大小;但是,在C#中,数组是固定宽度的,因此数组的容量和长度之间没有概念上的区别。
在幕后,List<T>
会根据需要将元素复制到更大,更大的数组中,因此Capacity
几乎只需用于诊断目的。
至于尝试通过new Person[initialColor]
进行初始化,您使用了错误的括号:[]
用于数组并在数组中查找项目,()
用于方法调用(在这种情况下,new Person(initialColor)
正在Person
)上调用构造函数。