2009-11-20 3 views
1

Как настроить индексировщик, динамически выращенный в размере? Вниз, я использовал массив фиксированного размера. Если я использую List<Employee>, то нет смысла иметь indexers.so, как я могу сохранить массив для динамического роста?C# Индексы динамического размера

class Department 
{ 
    private Employee[] employee = new Employee[6]; 

    public Employee this[int arg] 
    { 
     get { return this.employee[arg]; } 
     set { this.employee[arg] = value; } 
    } 
} 

ответ

4

Вы должны были бы создать новый массив, если индекс больше, чем текущий размер, и скопировать существующее содержимое в новый массив. Array.Resize сделает это за вас. (Обратите внимание, что он не меняет существующий массив - он возвращает вам новый массив указанного размера, содержащий предыдущие элементы.)

Возможно, вы захотите рассмотреть вопрос об изменении размера в более крупном массиве, чем вам действительно нужно, просто так что вам не нужно изменять размер так часто.

Вы уверены, что было бы не так просто использовать List<T>? Выполнение такого рода вещи вручную довольно утомительно, когда он построен в рамках уже ...

+1

Спасибо, Джон, тогда я пойду на Список 2009-11-20 08:04:00

+0

не могли бы вы изложить, как вы разрешили эту проблему? Я тоже застрял с той же проблемой – 2011-06-01 00:31:59

2

Если я использую List, то нет никакого смысла иметь шагового

Почему? Вы все еще можете использовать индексы со списками, и вы можете определить начальную емкость списка во время построения. См. Здесь: http://msdn.microsoft.com/en-us/library/d0cyc8ex.aspx

Смежные вопросы