使用数组从构造函数创建对象

时间:2017-05-06 21:40:01

标签: c# arrays

我是新手,我正在从Main的构造函数中尝试Console.Write()数组。我也试图将ToString()重写为Console.Write()一个整数数组作为字符串,但还没有找到如何做的线索。

 namespace Z1
 {
 class List
 {


  public List(int b)
  {
    int[] tabb = new int[b];
    Random r1 = new Random();
    for(int i=0;i<b;i++)
    {
      tabb [i] =r1.Next(0, 100);
    }
  }

  public List()
  {
    Random r2 = new Random();
    int rInt1=r2.Next(0,10);
    int[] tabc = new int[rInt1];
    Random r3 = new Random();
    for(int i=0;i<rInt1;i++){
      tabc [i] = r3.Next(0,100);

    }
  }
}

class Program
{
    static void Main()
    {
      List l1 = new List(10);
      List l2 = new List();
      Console.WriteLine(l1.ToString());
      Console.WriteLine(l2.ToString());

    }
}

}

2 个答案:

答案 0 :(得分:1)

要改变的第一件事是两个阵列。它们是局部变量,当您从构造函数中退出时,它们将被丢弃,您不能再使用它们了。我想你只想要一个可以用你的用户指定的大小或随机大小在1到10之间创建的数组。

最后,您可以按常规方式覆盖ToString()并返回数组的连接

class List
{
    static Random r1 = new Random();
    private int[] tabb;

    public List(int b)
    {
        tabb = new int[b];
        for (int i = 0; i < b; i++)
            tabb[i] = r1.Next(0, 100);
    }
    // This constructor calls the first one with a random number between 1 and 10
    public List(): this(r1.Next(1,11))
    { }

    public override string ToString()
    {
        return string.Join(",", tabb);
    }
}

现在您的Main方法可以获得预期的结果。

作为旁注,我认为这只是一个测试程序所以没有太多关注,但在一个真正的程序中,我强烈建议你避免创建一个名称与框架中定义的类冲突的类。最好避免使用List,Task,Queue等名称......

答案 1 :(得分:0)

您无法打印数组,您必须单独打印每个值。尝试使用此而不仅仅是Console.WriteLine();。另外,请确保在课程顶部有using LINQ;

l1.ToList().ForEach(Console.WriteLine);
l2.ToList().ForEach(Console.WriteLine);