在c#中显示不同类型列表的正确方式是什么?

在c#中显示不同类型列表的正确方式是什么?,c#,C#,好的,基本上我正在创建一个需要创建、读取、更新和删除的项目。但是,我指的不是数据库服务器,而是类型列表。我想知道如何显示Dvd类型列表。我的第一个目标是能够在开始实施更新和删除方法之前显示DVD列表。以下是我的课程: DvdController.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Dv

好的,基本上我正在创建一个需要创建、读取、更新和删除的项目。但是,我指的不是数据库服务器,而是类型列表。我想知道如何显示Dvd类型列表。我的第一个目标是能够在开始实施更新和删除方法之前显示DVD列表。以下是我的课程:

DvdController.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DvdManager.Models;
using DvdManager.Data;

namespace DvdManager.Controllers
{
    public class DvdController
    {
        List<Dvd> Dvds = new List<Dvd>(10);       


        public void Run()
        {
            Console.WriteLine("Welcome To Dvd Manager");

            CreateDvd();
        }

        private void CreateDvd()//Create
        {
            Dvds.Add(new Dvd(0, "Batman", 2010, "Bruce", 4));
            Dvds.Add(new Dvd(1, "Superman", 2009, "John", 4));
            Dvds.Add(new Dvd(2, "Wonderwoman", 2012, "Omar", 4));
            DisplayDvds();
        }

        private void DisplayDvds() //Read List<Dvd> dvds
        {
            for (int i = 0; i < Dvds.Count; i++)
            {
                Console.WriteLine(Dvds[i]);
            }
        }

        private void SearchDvds() //List
        {

        }

        private void EditDvd(int id, Dvd dvd) //Update
        {

        }

        private void RemoveDvd(int id) //Delete
        {


        }
    }
}
问题在于它显示:

DvdManager.Models.Dvd


但是,我希望它能通过Id、标题、发布年份、主管、评级来显示其价值。如何成功完成此操作?

您正在打印类的默认字符串表示形式,该表示形式由其
ToString
返回。如果需要不同的输出,您可以自己重写
ToString
。例如:

public override string ToString()
{
   return string.Format
              ("DVD [Id: {0}; Title: {1}; ReleaseYear: {2}; Director: {3}; Rating: {4}]",
               Id, Title, ReleaseYear, Director, Rating);
}

您可以在Dvd类中重写ToString()。您的问题提到了不同类型的列表,但您的代码只显示一种类型,即
Dvd
类型。有很多方法可以在控制台中显示对象属性的值;请参阅或,使用字符串插值
public override string ToString()=>$“DVD[Id:{Id};Title:{Title};发行年份:{ReleaseYear};Director:{Director};评级:{Rating}]”非常重要的问题,是否有方法在DvdController.cs中按索引访问id、标题、发布年份、导演或评级?例如,如果我想按id删除,这将不起作用:Dvds.remove(Dvds.Single(x=>x.id==2));实际上,我应该将这些属性声明为公共的,这就是为什么出于保护级别,它不起作用的原因。
public override string ToString()
{
   return string.Format
              ("DVD [Id: {0}; Title: {1}; ReleaseYear: {2}; Director: {3}; Rating: {4}]",
               Id, Title, ReleaseYear, Director, Rating);
}