在我的项目中,我需要一个"转移"名单。
基本上我有一个public class dyn_int : List<int>
来支持我们的一些旧脚本(用专有语言编写,但是&#34;半自动翻译&#34;到C#)
在该语言中,列表以1开始索引,而不是0!
我目前尝试创建一个便利API,以便我们的开发人员仍然可以使用他们熟悉的样式。
但我坚持创建索引运算符。
这是我当前对列表的索引访问器的实现。
getter工作正常,但我不知道如何处理set方法。
到目前为止,我没有找到List.SetElementAt(key, value)
方法。
public class dyn_int : List<int>
{
public int this[int key]
{
get
{
return this.ElementAt(key-1);
}
}
}
答案 0 :(得分:1)
这是一个快速的linqPad测试。你需要做一些错误处理等,但这应该让你去。
void Main()
{
var list = new CustomList<int>();
list.Add(1);
list.Add(2);
list[1] = 5;
list[1].Dump(); //output 5
}
public class CustomList<T>
{
IList<T> list = new List<T>();
public void Add(T item)
{
list.Add(item);
}
public T this[int index]
{
get
{
return list[index - 1];
}
set
{
list[index - 1] = value;
}
}
}