1

我需要创建另一个类的数组。例子:

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”参数的构造函数

我只需要一个类中的数组CarFactory汽车变量用它的构造函数初始化)。

4

4 回答 4

9

您刚刚使用了错误的括号。您总是对数组和索引器使用方括号。圆括号用于调用方法、构造函数等。您的意思是:

car[] arr = new car[num];

请注意,传统上 .NET 类型是 Pascal 大小写的,因此您的类型应该是CarandFactory而不是carand 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();
于 2013-03-01T18:52:41.073 回答
1

声明数组或索引器时需要使用[]not 。()

car[] arr = new car[num];
于 2013-03-01T18:54:08.597 回答
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();
        }
    }
}
于 2013-03-01T18:55:40.833 回答
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];
           }
      }

问候,

于 2013-03-01T18:58:56.187 回答