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方法。可能重复的可能重复的可能重复的答案是什么?阿德里安的答案要完整得多。这个答案如何?阿德里安的答案要完整得多。