我制作了一个名为 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/