Грамотный перевод из C++ в C# класс хранилища объектов
Формулировка задачи:
Помогите грамотно перевести. Плохо знаком с C#. Хотя бы совет что и как. Заранее спасибо.
Вот код этот же код на C++
public class Storage<T>
{
public int top;
public T [] s = new T[0];
public Storage()
{
top = 0;
}
public void add(T var)
{
T [] a = new T[top+1];
for(int i=0;i<top;i++) a[i] = s[i];
a[top]= var;
top++;
//delete []s; // ошибка
s = a;
}
public void remove(int p)
{
delete s[p]; // ошибка
if(top>0) {
Type [] a=new Type[top-1];
int j=0;
for(int i=0;i<top;i++)
{
if(i!= p)
{
a[j]=s[i];
j++;
}
}
//delete[]s;
s = a;
top--;
}
}
public T getObject(int p)
{
return s[p];
}
public int getCount()
{
return top;
}
}template <class Type>
class Storage
{
private:
int top;
Type *s = new Type[top];
public:
Storage() {
top = 0;
}
void add(Type var) {
Type *a=new Type[top+1];
for(int i=0;i<top;i++) a[i]=s[i];
a[top]= var;
top++;
delete []s;
s = a;
}
void remove(int p) {
delete s[p];
if(top>0) {
Type *a=new Type[top-1];
int j=0;
for(int i=0;i<top;i++) {
if(i!= p)
{
a[j]=s[i];
j++;
}
}
delete[]s;
s = a;
top--;
}
}Решение задачи: «Грамотный перевод из C++ в C# класс хранилища объектов»
textual
Листинг программы
public class Storage<T>
{
private int top;
private T [] s;
public Storage()
{
top = 0;
s = new T[top];
}
public void Add(T var)
{
T [] a = new T[top+1];
for (int i=0; i<top; i++) a[i] = s[i];
a[top]= var;
top++;
s = a;
}
public void Remove(int index)
{
if (top == 0) return;
T[] a = new T[top-1];
for(int i=0, j=0; i<top; i++)
{
if(i != index)
{
a[j]=s[i];
j++;
}
}
s = a;
top--;
}
public T this[int index]
{
get { return s[index]; }
}
public int Count
{
get { return top; }
}
}