C# 如何启动这样的自定义变量&引用;series=新的Serie(){1,2,3,4}";?
我做了一个叫做“意甲”的课程,基本上是一个列表。我怎样才能做到这样,我才能进入这样的一个意甲联赛;“series=newserie(){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_[
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
方法。