C#初学者-关于返回数组值的问题

C# beginner- Question regarding returning of Array values

internal double[] fillingArray()
{
    a = 1.5;
    b = .5;
    
    for (i = 0; i<10; i++)
    {
        c = a * b;
        a = a + 1;
        b = b + 1;
        arrayInt[i] = c;  
    }
    
    return arrayInt;
}

我想调用一个方法 fillingArray() 来存储数组变量并通过 displayAll() 主方法显示这些变量。 返回 arrayInt 时,控制台显示 system.Double 但不显示数组中的值。

您需要像使用填充函数一样解析每个值:

static void Test()
{
  Display(CreateFilledArray());
}

static internal void Display(double[] array)
{
  foreach ( var value in array )
    Console.WriteLine(value);
}

static internal double[] CreateFilledArray()
{
  var result = new double[10];
  double a = 1.5;
  double b = .5;
  for ( int index = 0; index < 10; index++ )
  {
    result[index] = a * b;
    a = a + 1;
    b = b + 1;
  }
  return result;
}

输出

0,75
3,75
8,75
15,75
24,75
35,75
48,75
63,75
80,75
99,75

我感觉你在做这样的事情:

Console.WriteLine(arrayInt);

并期望它显示数组中所有数字的表示。 C# 不这样做;它只会打印出数组的类型,即 System.Double[]

这里实际发生的是 WriteLine 只能在它可以专门处理的情况下写入“看起来合理的东西”。 WriteLine 可以处理许多不同的事情:

Console.WriteLine(1); //handles numbers
Console.WriteLine('1'); //handles characters
Console.WriteLine("1"); //handles strings

WriteLine 无法处理数组;它们被传递给处理对象的 WriteLine 版本,that 版本的 WriteLine 所做的唯一一件事就是在传入的对象上调用 ToString(),然后打印字符串结果ToString returns。当我们在数组上调用 ToString 时,它只是 returns 数组的类型,而不是数组中的值

这就是您在控制台中看到“System.Double[]”的原因

你必须遍历数组,一个一个地打印出值(你还可以使用其他技巧,但它们比你目前所知道的更先进的 c#,如果这样做,推荐它们是不明智的是一项学术作业)

我看得出你知道如何循环,所以我将把它的实现留给你

我将方法修改为字符串并返回一个字符串值连接数组的值——这有效

internal string fillingArray()
        {
            a = 1.5;
            b = .5;
            for (i = 0; i<10; i++)
            {
                c = a * b;
                a = a + 1;
                b = b + 1;
                arrayInt[i] = c;
                //astr array string
                astr = astr + arrayInt[i].ToString() + " ";
            }
            return astr;