c# - 我如何启动这样的自定义变量; "Serie S = new Serie() { 1, 2, 3, 4 }"?

标签 c# .net list class

我制作了一个名为 Serie 的类,它基本上是一个列表。我该怎么做才能制作这样的系列; “Serie S = new Serie() { 1, 2, 3, 4 }”就像您可以使用列表一样?

    class Serie
{
    public List<decimal> Serie_ { get; set; }

    public decimal this[int index]
    {
        get
        {
            return Serie_[index];
        }
        set
        {
            Serie_.Insert(index, value);
        }
    }

    public Serie()
    {

    }

    public Serie(List<decimal> serie)
    {
        Serie_ = serie;
    }

    public Serie Add(decimal Value)
    {
        List<decimal> lst = new List<decimal>();
        for (int i = 0; i < Serie_.Count; i++)
        {
            lst.Add(Serie_[i]);
        }
        lst.Add(Value);
        Serie S = new Serie(lst);
        return S;
    }

    public double Count()
    {
        return Serie_.Count;
    }

    public static Serie operator +(Serie left, decimal right)
    {
        List<decimal> temp = new List<decimal>();
        for (int i = 0; i < left.Count(); i++)
        {
            temp.Add(left[i] + right);
        }
        return new Serie(temp);
    }
}

尝试这样做时,我收到了错误消息;

Cannot initialize type '' with a collection initializer because it does not implement 'System.Collections.IEnumerable'

我不知道该怎么做。

最佳答案

实现 IEnumerable<T> , 试试这个代码:

public class Serie : IEnumerable<decimal>
{
    List<decimal> mylist = new List<decimal>();

    public decimal this[int index]
    {
        get { return mylist[index]; }
        set { mylist.Insert(index, value); }
    }

    public IEnumerator<decimal> GetEnumerator()
    {
        return mylist.GetEnumerator();
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return mylist.GetEnumerator();
    }


    public Serie()
    {

    }

    public Serie(List<decimal> serie)
    {
        mylist = serie;
    }

    public Serie Add(decimal Value)
    {
        mylist.Add(Value);
        return this;
    }

    public double Count()
    {
        return mylist.Count;
    }

    public static Serie operator +(Serie left, decimal right)
    {
        List<decimal> temp = new List<decimal>();
        for (int i = 0; i < left.Count(); i++)
        {
            temp.Add(left[i] + right);
        }
        return new Serie(temp);
    }
}

您可能还需要上述类的示例用法,例如:

    static void Main(string[] args)
    {

        Serie s = new Serie();
        s.Add(1).Add(2);
        for (int i = 0; i < s.Count(); i++)
        {
            Console.WriteLine(s[i]);
        }
        Console.ReadLine();
    }

关于c# - 我如何启动这样的自定义变量; "Serie S = new Serie() { 1, 2, 3, 4 }"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31209941/

相关文章:

c# - 动态添加 wpf 控件以包装面板

c# - 验证构造函数参数

c# - 使用 Fluent Validation 进行条件验证

.net - ProviderManifestToken 2008 或 2012

c++ - 迭代 std::list 时删除

c# - 以编程方式在 Hierarchy Unity 中导入 Assets

c# - 使用linq获取xml属性

c# - .NET 实现编译器最佳性能的最佳编码实践?

python - 字典和列表值处理

python - 访问嵌套列表中的元素