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;
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;