在控制台上打印列表时,请始终收到以下消息。
System.Collections.Generic.List`1[System.Int32]
这是控制台代码。它旨在生成给定长度的斐波那契序列。我试过使用ToString()方法,但这也不起作用。我已经用Java构建了算法,因此我知道这个问题从根本上讲是C#问题。如果我单独打印列表元素,但无法打印整个列表,则此问题已解决。
class Program
{
public static void Main(string[] args)
{
Fibonacci fibo = new Fibonacci();
Console.WriteLine(fibo.getSequence(9));
Console.ReadLine();
}
}
class Fibonacci
{
public List<int> getSequence(int length)
{
List<int> results = new List<int>();
results.Add(1);
results.Add(1);
int counter = 0;
while (counter != length - 2)
{
int num1 = results[results.Count - 1];
int num2 = results[results.Count - 2];
results.Add(num1 + num2);
counter++;
}
return results;
}
}
答案 0 :(得分:1)
您要返回List<int>
。要打印它,您必须遍历
foreach(var i in fibo.getSequence(9)) {
Console.WriteLine(i);
}
或者您可以使用String.Join()
Console.WriteLine(String.Join(" ", fibo.getSequence(9)));
答案 1 :(得分:1)
您正尝试直接将对象打印到控制台,尝试遍历列表并在返回的任何位置打印它们。
for (var item in returned)
Console.WriteLine(item)
(如果使用自定义类型)。请记住,您已经定义了它的to字符串方法。
答案 2 :(得分:0)
将您的Main()
更改为:
public static void Main(string[] args)
{
Fibonacci fibo = new Fibonacci();
foreach(var element in fibo.getSequence(9))
{
Console.WriteLine(element);
}
Console.ReadLine();
}
在示例中查看要传递给Console.WriteLine()
的内容。 getSequence()
返回列表,因此您要将列表传递给WriteLine()
。 WriteLine将ToString()
放在集合上,默认情况下,它将呈现该类型。如果将每个元素(int
)传递给它,它将在每个元素上调用ToString()
并给您编号。
这是基于您希望每个元素一行的假设。如果没有,请考虑使用String.Join