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

C# 无法将整个列表打印到控制台,c#,.net,list,C#,.net,List,在控制台上打印列表时,请不断收到以下消息 System.Collections.Generic.List`1[System.Int32] 这是控制台代码。它被设计用来生成给定长度的斐波那契序列。我尝试过使用ToString()方法,但也不起作用。我用Java构建了这个算法,所以我知道这个问题从根本上说是一个C#问题。如果我单独打印列表元素,但无法打印整个列表,那么问题就解决了 class Program { public static void Main(string[] args)

在控制台上打印列表时,请不断收到以下消息

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;
    }
}
类程序
{
公共静态void Main(字符串[]args)
{
斐波那契fibo=新斐波那契();
Console.WriteLine(fibo.getSequence(9));
Console.ReadLine();
}
}
类斐波那契
{
公共列表getSequence(整数长度)
{
列表结果=新列表();
结果:增加(1);
结果:增加(1);
int计数器=0;
while(计数器!=长度-2)
{
int num1=结果[results.Count-1];
int num2=结果[results.Count-2];
结果。添加(num1+num2);
计数器++;
}
返回结果;
}
}
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
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(String.Join(" ", fibo.getSequence(9)));
解释 在您的示例中,查看您传递给Console.WriteLine()的内容
getSequence()
正在返回一个列表,因此您正在将一个列表传递给
WriteLine()
。WriteLine将
ToString()
显示在集合上,默认情况下,该集合将显示类型。如果您将它传递给每个单独的元素(
int
),它将调用每个元素上的
ToString()
,并给出数字


这是基于您希望每个元素都有一行的假设。如果没有,请研究使用
String.Join
返回的是
列表。要打印它,您必须对其进行迭代

foreach(var i in fibo.getSequence(9)) {
    Console.WriteLine(i);
}
Console.WriteLine(String.Join(" ", fibo.getSequence(9)));
或者您可以使用
String.Join()


您正在返回一个
列表
。要打印它,您必须对其进行迭代

foreach(var i in fibo.getSequence(9)) {
    Console.WriteLine(i);
}
或者您可以使用
String.Join()


您正试图将对象直接打印到控制台,请尝试迭代列表并在返回的任何位置打印它们

for (var item in returned) 
   Console.WriteLine(item)

如果使用自定义类型。请记住,您已经定义了它的to string方法。

您正试图将对象直接打印到控制台,请尝试迭代列表,并在返回的任何位置打印它们

for (var item in returned) 
   Console.WriteLine(item)

如果使用自定义类型。请记住,您已经定义了它的to string方法。

可能重复的可能重复的可能重复的答案是什么?阿德里安的答案要完整得多。这个答案如何?阿德里安的答案要完整得多。