创建一个类数组
本文关键字:一个 数组 创建 | 更新日期: 2023-09-27 18:01:51
我需要创建另一个类的数组。例子:
namespace std
{
public class Car
{
double number,id;
public Car()
{
// initializing my variables for example:
number = Random.nextdouble();
}
}
public class Factory
{
public Factory(int num)
{
Car[] arr = new Car(num);
}
}
}
问题是我得到这个错误:
'Car'不包含接受'1'参数的构造函数
我只需要在Factory
类中有一个Car
的数组(汽车变量通过其构造函数初始化)。
你刚才用错括号了。数组和索引器总是使用方括号。圆括号用来调用方法、构造函数等。你的意思:
car[] arr = new car[num];
注意,传统的。net类型是pascal -case,所以你的类型应该是Car
和Factory
,而不是car
和factory
。
还要注意,在创建数组之后,每个元素都将是一个空引用——所以不应该这样写:
// Bad code - will go bang!
Car[] cars = new Car[10];
cars[0].SomeMethod(0);
:
// This will work:
Car[] cars = new Car[10];
cars[0] = new Car(); // Populate the first element with a reference to a Car object
cars[0].SomeMethod();
当你声明数组或索引器时,你需要使用[]
而不是()
。
car[] arr = new car[num];
如果您的要求不限制仅使用Array,则可以使用类型化列表。
List<Car> = new List<Car>(num);
//num has to be the size of list, but a list size is dinamically increased.
你代码中的错误是数组应该按如下方式初始化:
public class factory
{
public factory(int num)
{
car[] arr = new car[num];
}
}
认为,
using System;
namespace ConsoleApplication1
{
public class Car
{
public double number { get; set; }
public Car()
{
Random r = new Random();
number = r.NextDouble();// NextDouble isn't static and requires an instance
}
}
public class Factory
{
//declare Car[] outside of the constructor
public Car[] arr;
public Factory(int num)
{
arr = new Car[num];
}
}
class Program
{
static void Main(string[] args)
{
Factory f = new Factory(3);
f.arr[0] = new Car();
f.arr[1] = new Car();
f.arr[2] = new Car();
foreach (Car c in f.arr)
{
Console.WriteLine(c.number);
}
Console.Read();
}
}
}