【问题标题】:C# Outputting own Data Types of ListC#输出自己的List数据类型
【发布时间】:2020-09-11 21:03:57
【问题描述】:

我是 C# 新手,遇到以下问题:如果我尝试从部件列表中控制台输出我的所有部件,它总是给我:“部件”作为输出。我希望它提供我所有的财产,例如: 1. Partname = "TestEntry",PartID=1234 。我错过了什么吗?我的第二个问题是:从数据库中存储数据以在我的应用程序中表示它们的最佳方式是什么。我应该将它们也存储在列表中吗?谢谢大家!

using System;
using System.Collections.Generic;

class MainClass {
  public static void Main (string[] args) {

    List<Part> parts = new List<Part>();
    parts.Add(new Part() {PartName="TestEntry", PartId=1234});
    parts.Add(new Part() {PartName="TestEntry2", PartId=12354});

    parts.ForEach(entry => Console.Write("{0}\n", entry));
  }
}


class Part{
  public string PartName { get; set; }
  public int PartId { get; set; }
}

【问题讨论】:

标签: c#


【解决方案1】:

您可以通过指定要在 foreach 循环中输出 entry 的哪些属性来做到这一点:

parts.ForEach(entry => Console.Write($"Partname = \"{entry.PartName}\", PartID={entry.PartId}\n", entry));

您也可以保持循环不变,而是覆盖 ToString 类的 ToString 方法:

class Part
{
    public string PartName { get; set; }
    public int PartId { get; set; }

    public override string ToString()
    {
        return $"Partname = \"{PartName}\", PartID={PartId}";
    }
}

所有对象都定义了ToString 方法。默认实现是返回一个字符串,该字符串表示对象类型的完全限定名称。当您简单地执行Console.Write(myObject); 时,将调用ToString 方法,以返回代表对象的字符串。如果你想自定义调用ToString返回的内容,你需要重写类内部的方法。

【讨论】:

  • 谢谢。我不明白为什么重写 ToString() 方法会影响我的 Console.Write() 方法。你能解释一下吗?
  • @WomEpic 当然,我已经用解释更新了答案。希望这会有所帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-07
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多