创建返回数组的方法

本文关键字:方法 数组 返回 创建 | 更新日期: 2023-09-27 18:28:35

我要创建一个帮助程序方法,该方法返回一个新数组,其元素是原始数组的平方。但是当我运行代码时,控制台返回"System.Double[]"。我该如何解决这个问题?

下面是方法代码:

static double[] powerOfTwo(int[] arr)
        {
            double[] elevatedPower = new double[10];
            elevatedPower[0] = Math.Pow(arr[0], 2);
            elevatedPower[1] = Math.Pow(arr[1], 2);
            elevatedPower[2] = Math.Pow(arr[2], 2);
            elevatedPower[3] = Math.Pow(arr[3], 2);
            elevatedPower[4] = Math.Pow(arr[4], 2);
            elevatedPower[5] = Math.Pow(arr[5], 2);
            elevatedPower[6] = Math.Pow(arr[6], 2);
            elevatedPower[7] = Math.Pow(arr[7], 2);
            elevatedPower[8] = Math.Pow(arr[8], 2);
            elevatedPower[9] = Math.Pow(arr[9], 2);
            return elevatedPower;
        }

以及在控制台中打印它的代码:

static void Main(string[] args)
        {
            double[] powerValues = powerOfTwo(new int[] {1,2,3,4,5,6,7,8,9,10});
            Console.Write(powerValues);
            Console.ReadLine();
        }

创建返回数组的方法

您的方法工作正常。但是当你做Console.WriteLine(powerValues)时,编译器调用ToString()数据类型的方法,该方法System.double[]

foreach(var value in powerValues)
    Console.WriteLine(value);

与林克,using System.Linq;

var powerValues = (new int[] {1,2,3,4,5,6,7,8,9,10}).Select(x => x*x);

实际上,你没有打印你的值。您尝试打印数组,该数组返回其完整类型名称System.Double[]因为ToString调用它,该名称由Console.Write显式调用。

你甚至不需要这样的方法。只需使用 Enumerable.Select 生成包含平方值的IEnumerable<int>,例如;

var values = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (var value in values.Select(i => i * i))
{
     Console.Write(value); // 149162536496481100
}

我会使用Console.WriteLine将这些值分别写在单独的行中,或者如果您选择Write,则至少在它们后面放置一个空格Console.Write(value + " ")

当您调用Console.Write(powerValues);实际调用Console.Write(powerValues.ToString()); ToString 时,将返回一个表示当前对象的字符串。对于 double[],这是 "System.Double[]"。像这样更改您的代码:

    static void Main(string[] args)
    {
        double[] powerValues = powerOfTwo(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });
        foreach (var value in powerValues)
        {
            Console.WriteLine(value);
        }
        Console.ReadLine();
    }
使用以下

代码在简单的一行中编写代码。

new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }.ToList().ForEach(i => Console.WriteLine(i * i));

并且每个值都显示在新行中,因此与其他值相比,结果也很好。