2017-02-22 42 views
-4

Все типы, которые встроены в индексирование. Например, я знаю, что ICollection и IEnumerable этого не делают, но мне нужен список всех, что вы делаете.C# Типы, которые принимают индексирование

. Помимо списка, если кто-то может это предоставить, моя конкретная проблема связана с индексированием всех x, y точек на сетке, поэтому я хотел бы получить доступ к объекту в x, y через индекс, если это возможно.

Благодаря

+5

Объясните, что именно вы пытаетесь выполнить вместо этого. Нас кормят вас списком, не собираюсь делать очень полезный вопрос. –

+0

возьмите исходный код .net и выполните поиск 'this [' – DarkSquirrel42

ответ

1

Я сделал быстрый осмотр на mscorlib, вот результаты; В пространстве имен System.Collections;

ArrayList 
BitArray 
HashTable 
IDictionary, hence all the implementations. 
IList, hence all the implementations. 
SortedList 

Под пространством имен System.Collections.Generic

Dictionary<T, T> 
IDictionary<T, T>, hence all the implementations. 
IList<T>, hence all the implementations. 
IReadOnlyDictionary<T, T>, hence all the implementations. 
IReadOnlyList<T>, hence all the implementations. 
List<T>, hence all the implementations. 

Также у вас есть массивы. Но я предлагаю вам использовать специальный класс для вашей конкретной задачи. Вам нужно предоставить информацию о том, как выглядит элемент или объект Grid в x, y. Это зависит от пользователя? Это то, что вы предоставляете?

Вот простой общий подход.

class GridManager<T> 
{ 
    private T[,] _matrix; 

    public GridManager(int rows, int columns) 
    { 
     _matrix = new T[rows, columns]; 
    } 

    public T this[int i, int j] 
    { 
     get 
     { 
      return _matrix[i, j]; 
     } 
     set 
     { 
      _matrix[i, j] = value; 
     } 
    } 
} 
+1

Хотя вам приятно ответить на этот вопрос, это побудит людей продолжать задавать проблемы/некачественные/неясные вопросы. Этот вопрос уже имеет 4 близких голоса и даже может быть удален ... вместе с вашим ответом. –

+0

Я даже не знаю, является ли это на 100% точным. Например, «Словарь» использует ключ, а не индекс. –

+0

@DangerZone Это полностью зависит от пользователя, чтобы решить, что означают эти «ключи». Имейте в виду, что как массивы, так и словари - это одна к одной функции. Единственное отличие словаря заключается в том, что он не гарантирует существования вашего ключа (например, вы не можете определить свой домен). – welrocken