如何在C#中打印List<string>类型的对象

问题描述 投票:0回答:5

我是c#新手,我想打印列表类型的对象。如何打印该对象并在控制台中显示列表? 下面是我的代码:

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] 请提出解决方案。 预先感谢。

c# list
5个回答
3
投票

尝试简单的 Linq

Join
将结果转化为单个
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

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

0
投票

因此您知道在控制台中显示了一个列表,就像您在方法中所做的那样(

returnList.ForEach(Console.WriteLine);
)。现在您将列表对象返回给调用方法,但现在您不知道如何显示它,对吗?你为什么不在这里尝试同样的方法,就像这样:

p.GetPowersOf2(2).ForEach(Console.WriteLine);

因为变量

returnList
是从方法返回的,所以在调用方法中肯定会收到相同的结果。


0
投票

不要返回列表,只是这样调用它:

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

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

使用它代替代码中的列表,您的代码将正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.