Đó là trình chỉ mục được xác định trên giao diện. Điều này có nghĩa là bạn có thể get
và set
giá trị của list[index]
cho bất kỳ IList<T> list
và int index
.
Tài liệu: Indexers in Interfaces (C# Programming Guide)
Xem xét giao diện IReadOnlyList<T>
:
public interface IReadOnlyList<out T> : IReadOnlyCollection<T>,
IEnumerable<T>, IEnumerable
{
int Count { get; }
T this[int index] { get; }
}
Và một thực hiện ví dụ về giao diện mà:
public class Range : IReadOnlyList<int>
{
public int Start { get; private set; }
public int Count { get; private set; }
public int this[int index]
{
get
{
if (index < 0 || index >= Count)
{
throw new IndexOutOfBoundsException("index");
}
return Start + index;
}
}
public Range(int start, int count)
{
this.Start = start;
this.Count = count;
}
public IEnumerable<int> GetEnumerator()
{
return Enumerable.Range(Start, Count);
}
...
}
Bây giờ bạn có thể viết code như thế này:
IReadOnlyList<int> list = new Range(5, 3);
int value = list[1]; // value = 6
Nguồn
2015-05-28 16:00:45
Nó có nghĩa là bạn có thêm một phương thức 'get_Item' và' set_Item' để thực hiện các hoạt động bên trong nếu bạn gọi 'myList [myInteger] = foo;' hoặc 'T foo = myList [myInteger]' trong đó 'foo' thuộc loại 'T'. – atlaste