如何像c#中的tostring()方法一样重写list<>

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

我尝试在控制台上打印一个列表,例如 tostring() 方法,但是如何在使用列表时进行覆盖

public override string ToString() { return "[" + string.Join(',', lable) + "]"; }
我们如何重写上面的列表方法

但是如果我想覆盖这个怎么办?

公共覆盖列表list() {

}

c# dsa
1个回答
0
投票

如果我明白你想做什么。你不能 List 是一个密封类,它不允许直接重写方法。

但是,如果您真的想这样做(上帝知道为什么,因为没有代码),您可以将其作为属性放入自定义类中。像这样:

public class CustomList<T>
{
    private List<T> items = new List<T>();

    public void Add(T item)
    {
        items.Add(item);
    }

    public override string ToString()
    {
        return "[" + string.Join(", ", items) + "]";
    }
}

但是,如果您只是想覆盖该方法,因为您想控制打印。考虑一下:

    public static class ListExtensions {
        public static string ToCustomString<T>(this List<T> list)
        {
            return "[" + string.Join(", ", list) + "]";
        } 
}

这是一种扩展方法。它在 C# 中的工作方式就像现有方法的“Concat”(过度简化),您可以将方法添加到现有方法,而不更改基本方法。在你的情况下至少在我看来更干净......再次只有当你想控制打印输出时

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