30/09/2018, 21:31

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 ạ.

Văn Dương viết 23:35 ngày 30/09/2018

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,…

Xion viết 23:34 ngày 30/09/2018

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?

Reoteu Ray viết 23:32 ngày 30/09/2018

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ự…

Văn Dương viết 23:43 ngày 30/09/2018

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ử);
}
Bài liên quan
0