【问题标题】:print list<object> in console c# [duplicate]在控制台c#中打印列表<object> [重复]
【发布时间】:2020-07-31 17:40:50
【问题描述】:

当我尝试在 c# 中打印对象列表时,它不会打印我想要的内容,让我演示一下。

示例:

public class Classname
    {
        public string hello;
        public string world;

        
    }

namespace inloggning
{

    class Program
    {
        static void Main(string[] args)
        {
            List<object> listOfObjects = new List<object>();

            Classname example = new Classname();
            example.hello = "hello";
            example.world = "world";

            listOfObjects.Add(example);

            Console.WriteLine(listOfObjects[0]);

        }

    }
}

当我运行它时,它会打印出“inloggning.Classname”。有人可以帮我理解为什么以及如何修复它,以便打印“hello”和“world”。

【问题讨论】:

标签: c# list object


【解决方案1】:

向你的对象添加一个 toString 方法,就像这样

public string overide ToString()
{
return hello + " " + world;
}

编辑:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-override-the-tostring-method

【讨论】:

  • 这行得通。背景:在 C# 中,类上的 ToString 方法决定了在您记录时打印到控制台的内容。默认情况下,对于所有类,这只是写入类名。您可以覆盖它以显示更有帮助的内容。
  • 如果您想为具有许多属性的对象编写更少的代码,您还可以序列化为 JSON 并将其记录到控制台。
  • 仅供参考,您的方法声明中缺少返回类型
  • 如果字符串还没有被识别,你还认为我能做到吗?
  • @edwardthecoder 如果您尝试将空值连接到字符串,空值将被空字符串替换,因此它不会出错,但您可能只会从该方法返回一个空格。来自Ani's answer to another post
【解决方案2】:

像这样更改 WriteLine 语句:

Console.WriteLine(((ClassName)listOfObjects[0]).hello+(ClassName)listOfObjects[0]).world);

【讨论】:

  • 感谢您的回答!它真的有帮助。我现在想知道是否有一种方法可以打印 listofobjects 列表中的所有对象。使用 foreach 或类似的东西?
  • 欢迎您,您可以使用:for (var i = 0; i &lt; listOfObjects.Count; i++) { Console.WriteLine(((Classname)listOfObjects[i]).hello + ((Classname)listOfObjects[i]).world); }
猜你喜欢
  • 2022-01-25
  • 2015-08-23
  • 2016-07-07
  • 2019-09-20
  • 2017-08-13
  • 2013-06-15
  • 2013-11-07
  • 2016-12-27
相关资源
最近更新 更多