ToString()方法未返回预期的字符串。

3

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication3Generics
{
    class Program
    {
        static void Main(string[] args)
        {
            ScheduleSelectedItems sitems = new ScheduleSelectedItems("Yusuf");
            ScheduleSelectedItemsList slist = new ScheduleSelectedItemsList();
            slist.Items.Add(sitems);
            Console.Write(slist.Items[0].ToString());
            Console.ReadKey();
        }
    }
    public class ScheduleSelectedItems
    {
        private string Ad;

        public ScheduleSelectedItems(string ad)
        {
            Ad = ad;
        }
    }

    public class ScheduleSelectedItemsList
    {
        public List Items;

        public ScheduleSelectedItemsList()
        {
            Items = new List();
        }
    }
}

如何在我的控制台上添加“yusuf”?
4个回答

15
public class ScheduleSelectedItems
    {
        private string Ad;

        public ScheduleSelectedItems(string ad)
        {
            Ad = ad;
        }

        public override string ToString()
        {
            return this.Ad;
        }
    }

非常感谢你,BFree!你的帮助真的帮了我很多。我可以问一些问题吗?我怎么能在不覆盖我的老师的方法的情况下完成它呢?我需要你的巨大帮助或技巧 :) 再次感谢... - Penguen
如果您不想覆盖ToString()方法,您可以添加一个GetConsoleString()方法并调用它。 - Joel Coehoorn
此外,这还忘记了另一个类中缺少的“Add”方法。 - Joel Coehoorn
实际上,在他的代码中,他的“Items”是公共的,所以如果它是一个List<T>(他只是将其作为List,不确定那是什么),那么你可以直接访问Items并调用add。 - BFree

5

BFree所说的话,稍作修改以使其变为单数而不是复数:

public class ScheduleSelectedItem
{
    private string Ad;

    public ScheduleSelectedItem(string ad)
    {
        Ad = ad;
    }
    public override string ToString()
    {
        return this.Ad;
    }
}

此外,您想要一个“添加”方法来管理列表。既然如此,为什么不直接从列表类继承:

public class ScheduleSelectedItemsList : List<ScheduleSelectedItem>
{

}

或者你可以创建一个类型别名:

using ScheduleSelectedItemsList = List<ScheduleSelectedItem>;

无论哪种方式,您都可以像这样使用新代码:
class Program
{
    static void Main(string[] args)
    {
        var slist = new ScheduleSelectedItemsList() 
        { 
            new ScheduleSelectedItem("Yusuf") 
        };

        //write every item to the console, not just the first
        slist.All(item => Console.Write(item.ToString()) );
        Console.ReadKey();
    }
}

3
将以下内容添加到您的ScheduleSelectedItems类中:
    public override string ToString() {
        return Ad;
    }

这告诉系统如何格式化这样的对象。


2

您需要重写ScheduleSelectedItems的toString()方法以返回“Ad”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接