';系统数组';不包含';容量';-C#

';系统数组';不包含';容量';-C#,c#,C#,有人能帮我纠正两个错误吗 在类中,汽车显示: this.persons=新人[initialColor]-“无法将类型'string'隐式转换为'int'” for(int j=0;j

有人能帮我纠正两个错误吗

类中,汽车显示:

  • this.persons=新人[initialColor]-“无法将类型'string'隐式转换为'int'”

  • for(int j=0;j-“System.Array”不包含“Capacity”的定义,也不包含扩展方法 接受“System.Array”类型的第一个参数的“Capacity”可能 找不到(是否缺少using指令或程序集 参考?)

  • 为什么没有问题:for(inti=0;i?但是容量存在问题。我可以用什么来代替容量

    使用制度

    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; }
        }
    }
    
    公共类程序
    {   
    公共静态void Main()
    {
    蓝色汽车=新车(“蓝色”);
    车库小型车库=新车库(2);
    人员亲属人员=新人员(“亲属”);
    小型车库。停车场(蓝车,0);
    控制台。WriteLine(小型车库。汽车);
    blueCar.SitPerson(relativePerson,0);
    控制台。写入线(blueCar.Persons);
    }
    }
    班车
    {
    私人[]人;
    公共汽车(字符串首字母缩写颜色)
    {
    颜色=初始颜色;
    this.persons=新人[初始颜色];
    }
    公共字符串颜色{get;private set;}
    公众席人员(人员、内部座位)
    {
    人[座位]=人;
    }
    公众人物
    {
    收到
    {
    对于(int j=0;j
    容量
    适用于可扩展集合,例如,指基础数组的大小;然而,在C#中,数组的宽度是固定的,因此数组的容量和长度在概念上没有区别

    在引擎盖下,
    List
    会根据需要将元素复制到更新、更大的阵列中,从而使
    容量几乎完全用于诊断目的


    至于尝试通过
    新人[initialColor]
    初始化,您使用了错误的括号:
    []
    用于数组和在数组中查找项,
    ()
    用于方法调用(在本上下文中,
    新人(initialColor)
    正在
    人上调用构造函数.

    检查以了解如何使用阵列
    容量
    列表
    的成员,而不是
    阵列
    Capacity
    不应用于获取元素的数量,它是一个内部实现细节,这就是
    Length
    的用途。正如错误消息所说,
    System.Array
    没有
    Capacity
    但是
    Length
    。所以你应该用它。谢谢!我将容量改为长度。它可以工作。我更改了括号,它显示了下一步:无法将类型“OPP1.Person”隐式转换为“OPP1.Person[]”。(OPP1 Person-是我的名称空间)。因此,我确实更改了括号:this.persons=newperson(initialColor);但仍有一些错误我不知道如何修复:“无法隐式地将类型'OPP1.Person'转换为'OPP1.Person[]”@David还值得一提的是
    List.Capacity
    List.Count
    ,这意味着如果你有一个包含5个元素的
    列表
    ,然后
    ListCapacity==8
    除非调用
    List.trimOverse()
    ,它设置
    List.Capacity=List.Count
    。应该明确指出获取
    数组
    长度的正确方法是通过属性
    array.length