C#实现Ruby的负数索引器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
public class InvertibleList<T> : List<T> { public new T this [ int index] { get { if (index >= 0) return base [index]; if (Count + index < 0) throw new IndexOutOfRangeException(); return this [Count + index]; } set { if (index >= 0) base [index] = value; else { if (Count + index < 0) throw new IndexOutOfRangeException(); this [Count + index] = value; } } } } |
使用方法:
1
2
3
4
5
6
7
8
9
10
11
|
InvertibleList< string > list= new InvertibleList< string > { "1" , "2" , "3" , "4" , "5" , }; list[-2] = "asd" ; list.ForEach(Console.WriteLine); |
代码很简单,使用也很方便,希望对大家学习C#能够有所帮助