Nới rộng / thu hẹp mảng 1 chiều trong C#

như topic trên, mình mới học lập trình và ko hiểu chổ này nên nhờ các bạn giải thích dùm mình, có code và giải thích thì càng tốt xD, mình xin cảm ơn trước ạ.

Cách 1 : Khai báo mảng mới sau đó copy phần tử từ mảng cũ sang.

Cách 2 : Dùng một số dạng đối tượng hỗ trợ : Array, List,…

hmm … mình không hiểu ý của bạn cho lắm, bạn có thể giải thích rỏ hơn dc không?

muốn thoải mái trong việc nới rộng mảng thì dùng mảng động vì mảng động không cần khai báo phần tử ban đầu , còn mảng cố định phần tử ban đầu thì rất khó để mở rộng …từ đó bạn có thể tự suy nghĩ và chọn lựa kiểu mảng bạn cần…bên Java thì List,Arraylist , set ,collections,linkedlist… còn C# thì chắc cũng tương tự…

Nếu khai báo mảng kiểu này :

int[] MyArray = new int[n];

Thì Resize chỉ có cách khai báo mảng mới rồi copy dữ liệu sang:

int[] ArrayResize(int[] array,int size){
     int[] arraytemp = new int[size]; // khai báo mảng mới
     if(newsize>array.Lenght) newsize=array.Lenght; kiểm tra kích thước cho copy dữ liệu
     for(int i=0;i<newsize;i++) arraytemp[i]=array[i]; // copy dữ liệu
     return arraytemp; // trả về mảng mới
}

Còn dùng một số đối tượng kiểu khác ví dụ:

List<int> MyArray = new List<int>();
Array<int> MyArray = new Array<int>();
ObserverableCollection<int> MyArray = new ObserverableCollection<int>();
....

Thì mở rộng hay thu hẹp mảng chỉ cần phương thức Add hoặc Remove.

void Resize(ref List<int> array,int size){
     if(size<0) return; // nếu kích thước mới <0 => thoát
     if(size<array.Count) 
          while(size!=array.Count) array.Remove(phần tử);
     else 
          while(size!=array.Count) array.Add(phần tử);
}
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?