我需要创建另一个类的数组。 例如:
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'参数的构造函数
我只需要在Car
类中有一个Factory
数组(汽车变量用它的构造函数初始化)。
答案 0 :(得分:9)
你刚刚使用了错误的括号。您总是使用方括号表示数组和索引器。圆括号用于调用方法,构造函数等。您的意思是:
car[] arr = new car[num];
请注意,传统上.NET类型是Pascal,因此您的类型应为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();
答案 1 :(得分:1)
在声明数组或索引器时,您需要使用[]
而不是()
。
car[] arr = new car[num];
答案 2 :(得分:0)
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();
}
}
}
答案 3 :(得分:0)
如果您的要求不仅限于使用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];
}
}
此致