从List <int>继承的Own Set

时间:2017-06-07 10:25:39

标签: c# .net

您好我想创建继承自Set

的课程List<int>
class Set : List<int>
{
  public void Add(tmp)
  public void Pop(tmp)
  public print()
}

但是我有问题怎么看看consturctor可以有人给我的例子? 我知道应该怎么看方法(我会自己写的)。

3 个答案:

答案 0 :(得分:1)

List<T>有一个无参数构造函数,所以你不需要 在你的构造函数中做任何事情。

如果你不打算添加带参数的构造函数,你甚至可以完全省略它,当你创建new Set()时它会自动在基类上运行空构造函数:

class Set : List<int>
{
    public new void Add(int tmp)
    {
        // custom logic here
        base.Add(tmp);
    }
}

Set myset = new Set();
myset.Add(43);

请注意,您选择继承来自List<int>,这意味着List<int>定义的所有成员也可以在Set课程中使用。另一种解决方案是 wrap 列表:

class Set : IEnumerable<int>
{
    private readonly List<int> wrappedCollection = new List<int>();

    public void Add(int value)
    {
        wrappedCollection.Add(value);
    }

    ...
}

通过这种方式,您可以选择要实现的接口,并添加print()方法等其他功能。

答案 1 :(得分:0)

在类类型ctor中,然后按Tab键两次,这将创建默认构造函数:

        public Set()
        {

        }

使用Set作为类名可能会让人感到困惑,因为'set'关键字用于属性

答案 2 :(得分:0)

另一种可能性是使用扩展方法,因为在我看来,您只是尝试通过方法向List添加功能。这是一个例子:

public static class ListExtensions
{
    /// <summary>
    /// Adds an empty Dropdown Option at the start of the list
    /// If the list is null then null will be returned and nothing happens
    /// </summary>
    /// <param name="list">
    /// List of dropdown options
    /// </param>
    /// <returns >The list of dropdown options with the prepended empty option</returns>
    public static IList<SelectListItem> AddEmpty(this IList<SelectListItem> list)
    {
        list?.Insert(0, new SelectListItem {Value = string.Empty, Text = Resources.Labels.ChooseListItem});

        return list;
    }
}