Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何启动这样的自定义变量&引用;series=新的Serie(){1,2,3,4}";?_C#_.net_List_Class - Fatal编程技术网

C# 如何启动这样的自定义变量&引用;series=新的Serie(){1,2,3,4}";?

C# 如何启动这样的自定义变量&引用;series=新的Serie(){1,2,3,4}";?,c#,.net,list,class,C#,.net,List,Class,我做了一个叫做“意甲”的课程,基本上是一个列表。我怎样才能做到这样,我才能进入这样的一个意甲联赛;“series=newserie(){1,2,3,4}”就像你可以用列表做的那样 class Serie { public List<decimal> Serie_ { get; set; } public decimal this[int index] { get { return Serie_[

我做了一个叫做“意甲”的课程,基本上是一个列表。我怎样才能做到这样,我才能进入这样的一个意甲联赛;“series=newserie(){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);
    }
}
class系列
{
公共列表序列{get;set;}
此[整数索引]的公共十进制数
{
得到
{
返回序列号[索引];
}
设置
{
插入序号(索引、值);
}
}
公共系列()
{
}
公共系列(列表系列)
{
系列=系列;
}
公共系列加法(十进制值)
{
List lst=新列表();
对于(int i=0;i<系列计数;i++)
{
第一项增补(第i类);
}
一、增加(价值);
系列S=新系列(lst);
返回S;
}
公共重复计数()
{
返回序列号计数;
}
公共静态序列运算符+(左序列,右小数)
{
列表温度=新列表();
对于(int i=0;i
当尝试这样做时,我会收到错误消息

无法使用集合初始值设定项初始化类型“”,因为它未实现“System.Collections.IEnumerable”


我不知道如何执行此操作。

实现
IEnumerable
,请尝试以下代码:

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);
    }
}
公共类系列:IEnumerable
{
List mylist=新列表();
此[整数索引]的公共十进制数
{
获取{return mylist[index];}
集合{mylist.Insert(索引,值);}
}
公共IEnumerator GetEnumerator()
{
返回mylist.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
返回mylist.GetEnumerator();
}
公共系列()
{
}
公共系列(列表系列)
{
mylist=系列;
}
公共系列加法(十进制值)
{
mylist.Add(值);
归还这个;
}
公共重复计数()
{
返回mylist.Count;
}
公共静态序列运算符+(左序列,右小数)
{
列表温度=新列表();
对于(int i=0;i
您还可能需要上述类的示例用法,例如:

    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();
    }
static void Main(字符串[]args)
{
系列s=新系列();
s、 添加(1)。添加(2);
对于(int i=0;i
从技术上讲,您只需实现相应的
Add
方法:

 public class Serie {
   //TODO: add required stuff here

   public void Add(int value) {
     //TODO: add required stuff here
   }
 }

 ...
 // Add method lets you use the syntax sugar 
 Serie S = new Serie() { 1, 2, 3, 4 };
然而,由于
Serie
看起来像是
List
类的一些扩展/包装,因此实现一些接口也是合理的,例如

  IEnumerable<Decimal>
  IReadOnlyList<Decimal>
IEnumerable
IReadOnlyList

您必须实现
IEnumerable
并实现一个Add(十进制值)方法-您已经完成了


但是查看代码时,您应该重新思考,您想做什么。在我看来,这有点杂乱无章

错误消息正好回答了这个问题。实现IEnumerable接口可能的副本您还需要一个public
Add
方法来使用集合初始值设定项语法;我犯了很多错误。首先,GetEnumerator方法给出错误;“““[Namespace].Serie”未实现接口成员“System.Collections.IEnumerable.GetEnumerator()”。“[Namespace].Serie.GetEnumerator()”无法实现“System.Collections.IEnumerable.GetEnumerator()”,因为它没有匹配的返回类型“System.Collections.IEnumerator”。”然后我得到了一些错误,关于在不同的地方把小数列表添加到序列列表中。我不知道你想在这里做什么。。。我对此一无所知IEnumerable@TommyRäjert,我更正了答案,并添加了一个使用该选项的示例。请检查:)据我所知,您必须实现
IEnumerable
,并且需要具有正确签名的公共
Add
方法。