无法将整个列表打印到控制台

时间:2018-10-10 09:40:04

标签: c# .net list

在控制台上打印列表时,请始终收到以下消息。

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

3 个答案:

答案 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