这可能是一个非常基本的问题,但实际上并不知道如何制作它。我想创建以下内容:
public class MyArray
{
List<KeyValuePair<int, object>> myList = new List<KeyValuePair<int, object>>();
public void Set_Value(int index, object value)
{
myList = myList.Where(a => a.Key != index).ToList();
myList.Add(new KeyValuePair<int, object>(index, value));
}
public object Get_Value(int index)
{
if (myList.Any(a => a.Key == index)) return myList.FirstOrDefault(a => a.Key == index).Value;
else return null;
}
}
class Program
{
static void Main(string[] args)
{
MyArray array = new MyArray();
array[0] = "Hello world!";
}
}
制作一个我操纵自己的阵列......
答案 0 :(得分:1)
您可以在班级中添加索引运算符:
public object this[int index]
{
get
{
if (myList.Any(a => a.Key == index)) return myList.FirstOrDefault(a => a.Key == index).Value;
else return null;
}
set
{
myList = myList.Where(a => a.Key != index).ToList();
myList.Add(new KeyValuePair<int, object>(index, value));
}
}
请注意,您有几个机会来改进您的代码;我只是复制/粘贴它以显示索引操作符的机制。
答案 1 :(得分:0)
我认为你问的是你如何重载索引器操作符。
为此,请看这里: How do I overload the [] operator in C#
但是,我建议不要在这里重新创建轮子。实际使用数组或继承集合类可能更好。