创建返回数组的方法
本文关键字:方法 数组 返回 创建 | 更新日期: 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));
并且每个值都显示在新行中,因此与其他值相比,结果也很好。