Я реализую общий стек, используя массив. Но я получаю ошибку как:
Невозможно применить индексирование с помощью [] к выражению типа "T"
на линии:
data[SP] = data;
как исправить проблему? также я проверил эту ссылку:
Не удается применить индексирование к выражению типа "T"
Должен ли я реализовать то же исправление здесь и в моей ситуации? или есть другой лучший вариант?
Вот мой код:
public class MyStack<T>
{
private T[] data { get; set; }
private int SP { get; set; }
private int Capacity { get; set; }
public MyStack(int capacity)
{
this.Capacity = capacity;
data = new T[Capacity];
SP = -1;
// it works here, dont know why??? ;)
data[0] = default(T);
}
public void Push(T data)
{
++SP;
if(SP>=Capacity) growArray();
// This is where i get error.
data[SP] = data;
}
public T Pop()
{
if (SP < 0) throw new InvalidOperationException();
T value = data[SP];
data[SP] = default(T);
SP--;
return value;
}
public T Peak()
{
if (SP < 0) throw new InvalidOperationException();
return data[SP];
}
private void growArray()
{
throw new NotImplementedException();
}
}
Заранее спасибо.
System.Collections.Generic.Stack<T>
- person Waldfee   schedule 27.12.2012