我是c#的新手,我想要打印List类型的对象。如何在控制台中打印此对象和显示列表? 以下是我的代码:
class Program{
public List<double> GetPowersOf2(int input)
{
var returnList = new List<double>();
for (int i = 0; i < input + 1; i++)
{
returnList.Add(Math.Pow(2, i));
}
returnList.ForEach(Console.WriteLine);//display list from method.
return returnList;
}
static void Main(String[] args)
{
Program p = new Program();
Console.WriteLine(p.GetPowersOf2(2));//not display list...
}
}
它给出错误: System.Collections.Generic.List`1 [System.Double] 请建议解决方案。 提前谢谢。
答案 0 :(得分:2)
尝试将简单的 Linq 和string
结果合并为一个 // Let's use BigInteger instead of Double to represent 2's powers
using System.Numerics;
...
int input = 12;
string report = string.Join(Environment.NewLine, Enumerable
.Range(0, input)
.Select(index => BigInteger.Pow(2, index)));
Console.Write(report);
:
1
2
4
8
16
32
64
128
256
512
1024
2048
结果:
{{1}}
答案 1 :(得分:0)
var powers=p.GetPowersOf2(2);
foreach(double power in powers) Console.Writeline(power+", ");
原始代码不起作用的原因是因为.ToString()
的默认实现是简单地打印类的名称。只有在某些类别中才会被覆盖。
如果您想更改列表.ToString
的默认行为,则必须从List
派生一个类。
public class PrintableList<T> : List<T>
{
public override string ToString()
{
string result = "";
foreach (T obj in this)
{
result += obj.ToString() + "\n";
}
return result;
}
}
在代码中使用此代替您的列表,您的代码将正常运行。
答案 2 :(得分:0)
使用Linq:
公共课程计划{public List<double> GetPowersOf2(int input)
{
var returnList = new List<double>();
for (int i = 0; i < input + 1; i++)
{
returnList.Add(Math.Pow(2, i));
}
return returnList;
}
public static void Main(String[] args)
{
Program p = new Program();
p.GetPowersOf2(2).ForEach(Console.WriteLine);
}
}
答案 3 :(得分:0)
因此您知道在控制台中显示列表,就像您在方法(returnList.ForEach(Console.WriteLine);
)中所做的那样。现在您将列表对象返回给调用方法,现在您不知道如何显示它,对吧?你为什么不在这里尝试一样,如下:
p.GetPowersOf2(2).ForEach(Console.WriteLine);
因为变量returnList
从方法返回,所以在调用方法中肯定会收到相同的内容。
答案 4 :(得分:0)
不要返回List,只需这样调用:
class Program{
public void GetPowersOf2(int input)
{
var returnList = new List<double>();
for (int i = 0; i < input + 1; i++)
{
returnList.Add(Math.Pow(2, i));
}
returnList.ForEach(Console.WriteLine);//display list from method.
//return returnList;
}
static void Main(String[] args)
{
Program p = new Program();
p.GetPowersOf2(2);
}
}
或者像那样返回:
class Program{
public List<double> GetPowersOf2(int input)
{
var returnList = new List<double>();
for (int i = 0; i < input + 1; i++)
{
returnList.Add(Math.Pow(2, i));
}
//returnList.ForEach(Console.WriteLine);//display list from method.
return returnList;
}
static void Main(String[] args)
{
Program p = new Program();
p.GetPowersOf2(2).ForEach(Console.WriteLine);//not display list...
}
}