Конструктор для размещения моего собственного массива <T>класса - PullRequest
0 голосов
/ 30 марта 2012

У меня есть класс, такой как Quete (первым пришел, первым вышел)

public class Tor<T>
{
    private T[] elements;

    private int next;

    public event EventHandler<EventArgs> queueFull;   
}

Мне нужно построить Конструктор , который получает один параметр (размер очереди (int).выделяем арриал и инициализируем переменную,

как это сделать?

Ответы [ 5 ]

2 голосов
/ 30 марта 2012

А как насчет простого

public Tor(int size)
{
  elements = new T[size];
}
1 голос
/ 30 марта 2012
public class Tor<T> where T : new()
{
    public Tor(int size)
    { 
        elements = new T[size];
        for (int i = 0; i < size; i++)
        {
            elements[i] = new T();
        }
    }

    private T[] elements;

    private int next;

    public event EventHandler<EventArgs> queueFull;   
}

или

public class Tor<T> where T : new()
{
    public Tor(int size)
    { 
        elements = Enumerable.Range(1,size).Select (e => new T()).ToArray(); 
    }
    ...
}
0 голосов
/ 30 марта 2012

Рассмотрите возможность использования существующих классов

  • выводится из очереди, если необходимы события, как предложено в C #: запуск события при добавлении объекта в очередь
  • или если вы хотите создать свой собственный список использования, который позволит увеличивать массив по мере необходимости / предварительно выделять, если вы хотите.
0 голосов
/ 30 марта 2012
public class Tor<T>
{
    private T[] elements;

    private int next;

    public event EventHandler<EventArgs> queueFull;

    public Tor(int size)
    {
        if (size < 0)
            throw new ArgumentOutOfRangeException("Size cannot be less then zero");

        elements = new T[size];
        next = 0;
    }
}
0 голосов
/ 30 марта 2012
public class Tor<T>
{
    private T[] elements;

    private int next;

    public event EventHandler<EventArgs> queueFull;

    public Tor(int capacity)
    {
        elements = new T[capacity];
    }
}

должен это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...