Mảng trong ngôn ngữ lập trình C#


     Mảng trong ngôn ngữ lập trình C# là một kiểu dữ liệu tham chiếu thường được sử dụng để làm việc với một tập hợp các dữ liệu cùng kiểu.

Mảng trong ngôn ngữ lập trình C# là một kiểu dữ liệu tham chiếu thường được sử dụng để làm việc với một tập hợp các dữ liệu cùng kiểu.


      Mảng trong ngôn ngữ lập trình C# có những đặc điểm sau:

  • Mảng là một tập hợp dữ liệu cùng kiểu
  • Có 3 loại mảng trong C# :
    • Mảng 1 chiều
    • Mảng nhiều chiều
    • Mảng Jagged
  • Số lượng phần tử của mảng phải được khai báo cố định, chính xác trước khi sử dụng. Chúng ta không thể thay đổi số lượng phần tử này trong suốt quả trình sử dụng
  • Khi khai báo và khởi tạo, nếu không gán giá trị cho các phần tử của mảng thì giá trị mặc định của các phần tử trong mảng  :
  • Chúng ta sẽ truy cập tới các phần tử mảng bằng chỉ số mảng, trong ngôn ngữ lập trình C#, chỉ số mảng bắt đầu từ chỉ số 0
    • Ví dụ với mảng một chiều mảng gồm n phần từ thì chỉ số mảng bắt đầu từ 0 tới n-1
  • Các kiểu dữ liệu dạng mảng đều là các kiểu dữ liệu tham chiếu và kế từ lớp trừu tượng cở sở là lớp Array trong ngôn ngữ lập trình C#.
  • Từ các dữ liệu dạng mảng kế thừa các inteface : IEnumerable and IEnumerable<T> kể từ phiên bản .Net Framework 1.1 và .Net Framework 2.0 thì chúng ta có thể sử dụng câu lệnh điều khiển foreach để truy cập tới các phần tử của nó.

array int type trong C#

Hình minh họa kiểu mảng gồm 6 phần tử kiểu int


1.  Khai báo, cấp phát bộ nhớ, truy cập và khởi tạo Mảng trong ngôn ngữ lập trình C#

Khai báo mảng 1 chiều :

Khai báo mảng n chiều :

Khai báo mảng Jagged :

       Ví dụ khai báo mảng 1 chiều kiểu số nguyên và mảng 1 chiều kiểu chuỗi như sau :

       Sau khi khai báo ta cần khởi tạo và cấp phát bộ nhớ cho mảng bằng các xác định trước số phần tử của mảng trước khi sử dụng nó.

Cấp phát bộ nhớ cho Mảng trong ngôn ngữ lập trình C#

      Trong ngôn ngữ lập trình C#, chúng ta sẽ dùng toán tử new để cấp phát bộ nhớ cho mảng, như ở ví dụ trên ta cấp phát một bộ nhớ gồm 5 số nguyên cho mảng arrInt như sau:

Truy cập và khởi tạo tới các phần tử của Mảng

        Trong ngôn ngữ lập trình C#, chúng ta sẽ truy cập tới các phần tử mảng dựa vào chỉ số mảng, chỉ số mảng bắt đầu từ 0 và kết thúc ở n-1, trong đó n là số phần từ được cấp phát bộ nhớ của mảng và n phải được khai báo trước khi truy cập.

       Truy cập mảng theo cấu trúc sau đây:

       Như với mảng arrInt được định nghĩa ở trên, ta truy cập tới phần tử đầu tiên và khởi tạo giá trị của nó như sau

       Vì mảng là một tập hợp nhiều phần tử nên thông thường để truy cập tới các phần tử của mảng, người ta hay sử dụng các câu lệnh điều khiển lặp như for, while, do-while,…

Code

Result

       Mảng arrInt là mảng mà các phần tử của nó là kiểu dữ liệu giá trị int, do đó trừ phần tử đầu tiên được truy cập và gán giá trị bằng 1 ở bước trên, các phần tử của nó nhận giá trị mặc định bằng 0, khi chúng ta chưa khởi tạo cho nó.
array int type trong C# with five elements

      Trong C#, chúng ta hoàn toàn có thể vừa cấp phát bộ nhớ, vừa khởi tạo các giá trị của mảng bằng cách sử dụng cấu trúc như sau.

       Ví dụ như biến mảng arrStr được khai báo ở trên, chúng ta hoàn toàn có thể cấp phát bộ nhờ và khởi tạo 4 phần tử của nó như sau :

        Với việc dữ liệu kiểu mảng kế thừa các inteface : IEnumerable and IEnumerable<T> kể từ phiên bản .Net Framework 1.1 và .Net Framework 2.0 ta có thể dụng câu lệnh điều khiển foreach-in đối với dữ liệu mảng như sau :

Code

Result

array string type trong C# with foreach


2.  Các thuộc tính phương thức của Mảng trong ngôn ngữ lập trình C#

        Các kiểu dữ liệu dạng mảng đều là các kiểu dữ liệu tham chiếu và kế từ lớp trừu tượng cở sở là lớp Array trong ngôn ngữ lập trình C# do đó nó mang đặc điểm cơ bản của mảng như sau:

    Các thuộc tính của Mảng trong ngôn ngữ lập trình C#

STT Tên Đặc điểm
1 IsFixedSize Gets a value indicating whether the Array has a fixed size.
2 IsReadOnly Gets a value indicating whether the Array is read-only.
3 IsSynchronized Gets a value indicating whether access to the Array is synchronized (thread safe).
4 Length Gets the total number of elements in all the dimensions of the Array.
5 LongLength Gets a 64-bit integer that represents the total number of elements in all the dimensions of the Array.
6 Rank Gets the rank (number of dimensions) of the Array. For example, a one-dimensional array returns 1, a two-dimensional array returns 2, and so on.
7 SyncRoot Gets an object that can be used to synchronize access to the Array.

    Các phương thức của Mảng trong ngôn ngữ lập trình C#

STT Tên Đặc điểm
1 AsReadOnly(T[]) Returns a read-only wrapper for the specified array.
2 BinarySearch(Array, Int32, Int32, Object) Searches a range of elements in a one-dimensional sorted array for a value, using the IComparable interface implemented by each element of the array and by the specified value.
3 BinarySearch(Array, Int32, Int32, Object, IComparer) Searches a range of elements in a one-dimensional sorted array for a value, using the specified IComparer interface.
4 BinarySearch(Array, Object) Searches an entire one-dimensional sorted array for a specific element, using the IComparable interface implemented by each element of the array and by the specified object.
5 BinarySearch(Array, Object, IComparer) Searches an entire one-dimensional sorted array for a value using the specified IComparer interface.
6 BinarySearch(T[], Int32, Int32, T) Searches a range of elements in a one-dimensional sorted array for a value, using the IComparable generic interface implemented by each element of the Array and by the specified value.
7 BinarySearch(T[], Int32, Int32, T, IComparer) Searches a range of elements in a one-dimensional sorted array for a value, using the specified IComparer generic interface.
8 BinarySearch(T[], T) Searches an entire one-dimensional sorted array for a specific element, using the IComparable generic interface implemented by each element of the Array and by the specified object.
9 BinarySearch(T[], T, IComparer) Searches an entire one-dimensional sorted array for a value using the specified IComparer generic interface.
10 Clear(Array, Int32, Int32) Sets a range of elements in an array to the default value of each element type.
11 Clone() Creates a shallow copy of the Array.
12 ConstrainedCopy(Array, Int32, Array, Int32, Int32) Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. Guarantees that all changes are undone if the copy does not succeed completely.
13 ConvertAll<TInput,TOutput>(TInput[], Converter<TInput,TOutput>) Converts an array of one type to an array of another type.
14 Copy(Array, Array, Int32) Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. The length is specified as a 32-bit integer.
15 Copy(Array, Array, Int64) Copies a range of elements from an Array starting at the first element and pastes them into another Array starting at the first element. The length is specified as a 64-bit integer.
16 Copy(Array, Int32, Array, Int32, Int32) Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. The length and the indexes are specified as 32-bit integers.
17 Copy(Array, Int64, Array, Int64, Int64) Copies a range of elements from an Array starting at the specified source index and pastes them to another Array starting at the specified destination index. The length and the indexes are specified as 64-bit integers.
18 CopyTo(Array, Int32) Copies all the elements of the current one-dimensional array to the specified one-dimensional array starting at the specified destination array index. The index is specified as a 32-bit integer.
19 CopyTo(Array, Int64) Copies all the elements of the current one-dimensional array to the specified one-dimensional array starting at the specified destination array index. The index is specified as a 64-bit integer.
20 CreateInstance(Type, Int32) Creates a one-dimensional Array of the specified Type and length, with zero-based indexing.
21 CreateInstance(Type, Int32, Int32) Creates a two-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.
22 CreateInstance(Type, Int32, Int32, Int32) Creates a three-dimensional Array of the specified Type and dimension lengths, with zero-based indexing.
23 CreateInstance(Type, Int32[]) Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. The dimension lengths are specified in an array of 32-bit integers.
24 CreateInstance(Type, Int32[], Int32[]) Creates a multidimensional Array of the specified Type and dimension lengths, with the specified lower bounds.
25 CreateInstance(Type, Int64[]) Creates a multidimensional Array of the specified Type and dimension lengths, with zero-based indexing. The dimension lengths are specified in an array of 64-bit integers.
26 Empty() Returns an empty array.
27 Equals(Object) Determines whether the specified object is equal to the current object. (Inherited from Object)
28 Exists(T[], Predicate) Determines whether the specified array contains elements that match the conditions defined by the specified predicate.
29 Find(T[], Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the first occurrence within the entire Array.
30 FindAll(T[], Predicate) Retrieves all the elements that match the conditions defined by the specified predicate.
31 FindIndex(T[], Int32, Int32, Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the Array that starts at the specified index and contains the specified number of elements.
32 FindIndex(T[], Int32, Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the range of elements in the Array that extends from the specified index to the last element.
33 FindIndex(T[], Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the first occurrence within the entire Array.
34 FindLast(T[], Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the last occurrence within the entire Array.
35 FindLastIndex(T[], Int32, Int32, Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.
36 FindLastIndex(T[], Int32, Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.
37 FindLastIndex(T[], Predicate) Searches for an element that matches the conditions defined by the specified predicate, and returns the zero-based index of the last occurrence within the entire Array.
38 ForEach(T[], Action) Performs the specified action on each element of the specified array.
39 GetEnumerator() Returns an IEnumerator for the Array.
40 GetHashCode() Serves as the default hash function. (Inherited from Object)
41 GetLength(Int32) Gets a 32-bit integer that represents the number of elements in the specified dimension of the Array.
42 GetLongLength(Int32) Gets a 64-bit integer that represents the number of elements in the specified dimension of the Array.
43 GetLowerBound(Int32) Gets the index of the first element of the specified dimension in the array.
44 GetType() Gets the Type of the current instance. (Inherited from Object)
45 GetUpperBound(Int32) Gets the index of the last element of the specified dimension in the array.
46 GetValue(Int32) Gets the value at the specified position in the one-dimensional Array. The index is specified as a 32-bit integer.
47 GetValue(Int32, Int32) Gets the value at the specified position in the two-dimensional Array. The indexes are specified as 32-bit integers.
48 GetValue(Int32, Int32, Int32) Gets the value at the specified position in the three-dimensional Array. The indexes are specified as 32-bit integers.
49 GetValue(Int32[]) Gets the value at the specified position in the multidimensional Array. The indexes are specified as an array of 32-bit integers.
50 GetValue(Int64) Gets the value at the specified position in the one-dimensional Array. The index is specified as a 64-bit integer.
51 GetValue(Int64, Int64) Gets the value at the specified position in the two-dimensional Array. The indexes are specified as 64-bit integers.
52 GetValue(Int64, Int64, Int64) Gets the value at the specified position in the three-dimensional Array. The indexes are specified as 64-bit integers.
53 GetValue(Int64[]) Gets the value at the specified position in the multidimensional Array. The indexes are specified as an array of 64-bit integers.
54 IndexOf(Array, Object) Searches for the specified object and returns the index of its first occurrence in a one-dimensional array.
55 IndexOf(Array, Object, Int32) Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. The range extends from a specified index to the end of the array.
56 IndexOf(Array, Object, Int32, Int32) Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of ifs first occurrence. The range extends from a specified index for a specified number of elements.
57 IndexOf(T[], T) Searches for the specified object and returns the index of its first occurrence in a one-dimensional array.
58 IndexOf(T[], T, Int32) Searches for the specified object in a range of elements of a one dimensional array, and returns the index of its first occurrence. The range extends from a specified index to the end of the array.
59 IndexOf(T[], T, Int32, Int32) Searches for the specified object in a range of elements of a one-dimensional array, and returns the index of its first occurrence. The range extends from a specified index for a specified number of elements.
60 Initialize() Initializes every element of the value-type Array by calling the default constructor of the value type.
61 LastIndexOf(Array, Object) Searches for the specified object and returns the index of the last occurrence within the entire one-dimensional Array.
62 LastIndexOf(Array, Object, Int32) Searches for the specified object and returns the index of the last occurrence within the range of elements in the one-dimensional Array that extends from the first element to the specified index.
63 LastIndexOf(Array, Object, Int32, Int32) Searches for the specified object and returns the index of the last occurrence within the range of elements in the one-dimensional Array that contains the specified number of elements and ends at the specified index.
64 LastIndexOf(T[], T) Searches for the specified object and returns the index of the last occurrence within the entire Array.
65 LastIndexOf(T[], T, Int32) Searches for the specified object and returns the index of the last occurrence within the range of elements in the Array that extends from the first element to the specified index.
66 LastIndexOf(T[], T, Int32, Int32) Searches for the specified object and returns the index of the last occurrence within the range of elements in the Array that contains the specified number of elements and ends at the specified index.
67 MemberwiseClone() Creates a shallow copy of the current Object. (Inherited from Object)
68 Resize(T[], Int32) Changes the number of elements of a one-dimensional array to the specified new size.
69 Reverse(Array) Reverses the sequence of the elements in the entire one-dimensional Array.
70 Reverse(Array, Int32, Int32) Reverses the sequence of the elements in a range of elements in the one-dimensional Array.
71 SetValue(Object, Int32) Sets a value to the element at the specified position in the one-dimensional Array. The index is specified as a 32-bit integer.
72 SetValue(Object, Int32, Int32) Sets a value to the element at the specified position in the two-dimensional Array. The indexes are specified as 32-bit integers.
73 SetValue(Object, Int32, Int32, Int32) Sets a value to the element at the specified position in the three-dimensional Array. The indexes are specified as 32-bit integers.
74 SetValue(Object, Int32[]) Sets a value to the element at the specified position in the multidimensional Array. The indexes are specified as an array of 32-bit integers.
75 SetValue(Object, Int64) Sets a value to the element at the specified position in the one-dimensional Array. The index is specified as a 64-bit integer.
76 SetValue(Object, Int64, Int64) Sets a value to the element at the specified position in the two-dimensional Array. The indexes are specified as 64-bit integers.
77 SetValue(Object, Int64, Int64, Int64) Sets a value to the element at the specified position in the three-dimensional Array. The indexes are specified as 64-bit integers.
78 SetValue(Object, Int64[]) Sets a value to the element at the specified position in the multidimensional Array. The indexes are specified as an array of 64-bit integers.
79 Sort(Array) Sorts the elements in an entire one-dimensional Array using the IComparableimplementation of each element of the Array.
80 Sort(Array, Array) Sorts a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Arrayusing the IComparable implementation of each key.
81 Sort(Array, Array, IComparer) Sorts a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Arrayusing the specified IComparer.
82 Sort(Array, Array, Int32, Int32) Sorts a range of elements in a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the IComparable implementation of each key.
83 Sort(Array, Array, Int32, Int32, IComparer) Sorts a range of elements in a pair of one-dimensional Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the specified IComparer.
84 Sort(Array, IComparer) Sorts the elements in a one-dimensional Array using the specified IComparer.
85 Sort(Array, Int32, Int32) Sorts the elements in a range of elements in a one-dimensional Array using the IComparable implementation of each element of the Array.
86 Sort(Array, Int32, Int32, IComparer) Sorts the elements in a range of elements in a one-dimensional Array using the specified IComparer.
87 Sort(T[]) Sorts the elements in an entire Array using the IComparable generic interface implementation of each element of the Array.
88 Sort(T[], Comparison) Sorts the elements in an Array using the specified Comparison.
89 Sort(T[], IComparer) Sorts the elements in an Array using the specified IComparer generic interface.
90 Sort(T[], Int32, Int32) Sorts the elements in a range of elements in an Array using the IComparable generic interface implementation of each element of the Array.
91 Sort(T[], Int32, Int32, IComparer) Sorts the elements in a range of elements in an Array using the specified IComparer generic interface.
92 Sort<TKey,TValue>(TKey[], TValue[]) Sorts a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the IComparable generic interface implementation of each key.
93 Sort<TKey,TValue>(TKey[], TValue[], IComparer) Sorts a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Array using the specified IComparer generic interface.
94 Sort<TKey,TValue>(TKey[], TValue[], Int32, Int32) Sorts a range of elements in a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Arrayusing the IComparable generic interface implementation of each key.
95 Sort<TKey,TValue>(TKey[], TValue[], Int32, Int32, IComparer) Sorts a range of elements in a pair of Array objects (one contains the keys and the other contains the corresponding items) based on the keys in the first Arrayusing the specified IComparer generic interface.
96 ToString() Returns a string that represents the current object. (Inherited from Object)
97 TrueForAll(T[], Predicate) Determines whether every element in the array matches the conditions defined by the specified predicate.

3. Các ví dụ, ứng dụng của Mảng trong ngôn ngữ lập trình C#

+ Cộng hai số lớn trong ngôn ngữ lập trình C#


Phản hồi

Phản hồi