Tìm hiểu C# và ứng dụng của C# p 11
Số trang: 9
Loại file: pdf
Dung lượng: 281.40 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chương 9 Array, Indexer, and Collection
.NET Framework cung cấp cho ta rất nhiều kiểu lớp tập hợp: Array, ArrayList, NameValueCollection, StringCollection, Queue, Stack, và BitArray. Array là lớp đơn giản nhất. Trong C# nó được ánh xạ thành cú pháp dựng sẵn tương tự như C/C++. Net Framework cũng cung nấp những giao diện chuẩn như IEnumerable, ICollection để tương tác với các lớp tập hợp (túi chứa).
9.1 Mảng (Array)
Mảng là một tập hợp các phần tử có cùng kiểu, được xác định vị trí trong tập hợp bằng chỉ mục. C# cung cấp những dạng cú pháp dạng đơn...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 11 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang Chương 9 Array, Indexer, and Collection .NET Framework cung cấp cho ta rất nhiều kiểu lớp tập hợp: Array, ArrayList, NameValueCollection, StringCollection, Queue, Stack, và BitArray. Array là lớp đơn giản nhất. Trong C# nó được ánh xạ thành cú pháp dựng sẵn tương tự như C/C++. Net Framework cũng cung nấp những giao diện chuẩn như IEnumerable, ICollection để tương tác với các lớp tập hợp (túi chứa). 9.1 Mảng (Array) Mảng là một tập hợp các phần tử có cùng kiểu, được xác định vị trí trong tập hợp bằng chỉ mục. C# cung cấp những dạng cú pháp dạng đơn giản nhất cho việc khai báo một mảng, rất dễ học và sử dụng. 9.1.1 Khai báo mảng Chúng ta có thể khai báo một mảng kiểu C# như sau: kiểu[] tên_mảng; Ví dụ như: int[] myIntArray; Dấu ngoặc vuông [ ] biểu thị cho tên biến ở sau là một mảng Ví dụ dưới đây khai báo một biến kiểu mảng nguyên myIntArray với số phần tử ban đầu là 5: myIntArray = new int[5]; 9.1.2 Giá trị mặc định Giả sử có đoạn mã sau: /*1*/ int[] myArray; /*2*/ maArray = new int[5]; /*3*/ Button[] myButtonArray; /*4*/ myButtonArray = new Button[5]; dòng /*1*/ khai báo biến myArray là một mảng kiểu int. Khi này biến myArray có giá trị là null do chưa được khởi tạo. Dòng /*2*/ khởi tạo biến myArray, các phần tử trong mảng được khởi tạo bằng giá trị mặc định là 0. Dòng /*3*/ tương tự /*1*/ nhưng Button thuộc kiểu tham chiếu (reference type). Dòng /*4*/ khởi tạo biến myButtonArray, các phần tử trong mảng không được khởi tạo (giá trị khởi tạo là null). Sử dụng bất kỳ phần tử nào của mảng cũng gây lỗi chưa khởi tạo biến. 58 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang 9.1.3 Truy cập đến những phần tử trong mảng Để truy cập đến những phần tử trong mảng, ta sử dụng toán tử lấy chỉ mục []. Cũng giống như C/C++, chỉ mục mảng được tính bắt đầu từ phần tử 0. Property Length của lớp Array cho biết được kích thước một mảng. Như vậy chỉ mục của mảng đi từ 0 đến Length - 1. Trong mảng myArray ví dụ trên để lấy phần tử thứ 2 (có chỉ số là 1) trong mảng, ta viết như sau: int phan_tu_thu_hai = myArray[1]; 9.2 Câu lệnh foreach foreach là một lệnh vòng lặp, dùng để duyệt tất cả các phần tử của một mảng, tập hợp (nói đúng hơn là những lớp có cài đặt giao diện IEnumerable). Cú pháp của foreach nhẹ nhàng hơn vòng lặp for (ta có thể dùng for thay cho foreach) foreach (kiểu tên_biến in biến_mảng) { khối lệnh } Ví dụ 9-1 Sử dụng foreach using System; namespace Programming_CSharp { // một lớp đơn giản để chứa trong mảng public class Employee { public Employee(int empID) { this.empID = empID; } public override string ToString() { return empID.ToString(); } private int empID; private int size; } public class Tester { static void Main() { int[] intArray; Employee[] empArray; intArray = new int[5]; empArray = new Employee[3]; // populate the array for (int i = 0; i < empArray.Length; i++) empArray[i] = new Employee(i+10); foreach (int i in intArray) Console.WriteLine(i.ToString()); foreach (Employee e in empArray) Console.WriteLine(e.ToString()); 59 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang } } } 9.2.1 Khởi tạo các phần tử mảng Ta có thể khởi tạo các phần tử mảng vào thời điểm khai báo mảng, bằng cách ta cung cấp một danh sách những giá trị của mảng được giới hạn trong hai dấu ngoặc nhọn { }. C# có thể cung cấp những cú phápngắn gọn như sau: int[] myIntArray = new int[5] { 2, 4, 6, 8, 10 } int[] myIntArray = { 2, 4, 6, 8, 10 } Hai cách trên cho cùng kết quả là một mảng 5 phần tử có giá trị là 2, 4, 6, 8, 10. 9.2.2 Từ khóa params Đôi lúc có những phương thức ta không biết trước số lương tham số được truyền vào như: phương thức Main() không thể biết trước số lượng tham số người dùng sẽ truyền vào. Ta có thể sử tham số là mảng. Tuy nhiên khi gọi hàm ta phải tạo một biến mảng để làm tham số. C# cung cấp cú pháp để ta không cần truyền trực tiếp các phần tử của mảng bằng cách thêm từ khóa params Ví dụ 9-2 Sử dụng từ khóa params using System; namespace Programming_CSharp { public class Tester { static void Main( ) { Tester t = new Tester( ); /** * cách truyền tham số bằng các phần tử * không cần phải khởi tạo mảng * (cú pháp rất tự do) */ t.DisplayVals(5,6,7,8); /** * Cách truyền tham số bằng mảng * Mảng phải được tạo sẵn */ int [] explicitArray = new int[5] {1,2,3,4,5}; t.DisplayVals(explicitArray); } public void DisplayVals(params int[] intVals) { foreach (int i in intVals) { Console.WriteLine(DisplayVals {0},i); } } 60 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang } } Kết quả: DisplayVals 5 DisplayVals 6 DisplayVals 7 DisplayVals 8 DisplayVals 1 DisplayVals 2 DisplayVals 3 DisplayVals 4 DisplayVals 5 9.2.3 Mảng nhiều chiều Ma trận là một ví dụ về mảng hai chiều. C# cho phép khai báo mảng n chiều, tuy nhiên thông dụng nhất vẫn là mảng một chiều (mảng) và mảng hai chiều. Ví dụ trong phần này là mảng hai chiều, tuy nhiên đối với n chiều cú pháp vẫn tương tự. 9.2.3.1 Mảng chữ nhật Tro ...
Nội dung trích xuất từ tài liệu:
Tìm hiểu C# và ứng dụng của C# p 11 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang Chương 9 Array, Indexer, and Collection .NET Framework cung cấp cho ta rất nhiều kiểu lớp tập hợp: Array, ArrayList, NameValueCollection, StringCollection, Queue, Stack, và BitArray. Array là lớp đơn giản nhất. Trong C# nó được ánh xạ thành cú pháp dựng sẵn tương tự như C/C++. Net Framework cũng cung nấp những giao diện chuẩn như IEnumerable, ICollection để tương tác với các lớp tập hợp (túi chứa). 9.1 Mảng (Array) Mảng là một tập hợp các phần tử có cùng kiểu, được xác định vị trí trong tập hợp bằng chỉ mục. C# cung cấp những dạng cú pháp dạng đơn giản nhất cho việc khai báo một mảng, rất dễ học và sử dụng. 9.1.1 Khai báo mảng Chúng ta có thể khai báo một mảng kiểu C# như sau: kiểu[] tên_mảng; Ví dụ như: int[] myIntArray; Dấu ngoặc vuông [ ] biểu thị cho tên biến ở sau là một mảng Ví dụ dưới đây khai báo một biến kiểu mảng nguyên myIntArray với số phần tử ban đầu là 5: myIntArray = new int[5]; 9.1.2 Giá trị mặc định Giả sử có đoạn mã sau: /*1*/ int[] myArray; /*2*/ maArray = new int[5]; /*3*/ Button[] myButtonArray; /*4*/ myButtonArray = new Button[5]; dòng /*1*/ khai báo biến myArray là một mảng kiểu int. Khi này biến myArray có giá trị là null do chưa được khởi tạo. Dòng /*2*/ khởi tạo biến myArray, các phần tử trong mảng được khởi tạo bằng giá trị mặc định là 0. Dòng /*3*/ tương tự /*1*/ nhưng Button thuộc kiểu tham chiếu (reference type). Dòng /*4*/ khởi tạo biến myButtonArray, các phần tử trong mảng không được khởi tạo (giá trị khởi tạo là null). Sử dụng bất kỳ phần tử nào của mảng cũng gây lỗi chưa khởi tạo biến. 58 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang 9.1.3 Truy cập đến những phần tử trong mảng Để truy cập đến những phần tử trong mảng, ta sử dụng toán tử lấy chỉ mục []. Cũng giống như C/C++, chỉ mục mảng được tính bắt đầu từ phần tử 0. Property Length của lớp Array cho biết được kích thước một mảng. Như vậy chỉ mục của mảng đi từ 0 đến Length - 1. Trong mảng myArray ví dụ trên để lấy phần tử thứ 2 (có chỉ số là 1) trong mảng, ta viết như sau: int phan_tu_thu_hai = myArray[1]; 9.2 Câu lệnh foreach foreach là một lệnh vòng lặp, dùng để duyệt tất cả các phần tử của một mảng, tập hợp (nói đúng hơn là những lớp có cài đặt giao diện IEnumerable). Cú pháp của foreach nhẹ nhàng hơn vòng lặp for (ta có thể dùng for thay cho foreach) foreach (kiểu tên_biến in biến_mảng) { khối lệnh } Ví dụ 9-1 Sử dụng foreach using System; namespace Programming_CSharp { // một lớp đơn giản để chứa trong mảng public class Employee { public Employee(int empID) { this.empID = empID; } public override string ToString() { return empID.ToString(); } private int empID; private int size; } public class Tester { static void Main() { int[] intArray; Employee[] empArray; intArray = new int[5]; empArray = new Employee[3]; // populate the array for (int i = 0; i < empArray.Length; i++) empArray[i] = new Employee(i+10); foreach (int i in intArray) Console.WriteLine(i.ToString()); foreach (Employee e in empArray) Console.WriteLine(e.ToString()); 59 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang } } } 9.2.1 Khởi tạo các phần tử mảng Ta có thể khởi tạo các phần tử mảng vào thời điểm khai báo mảng, bằng cách ta cung cấp một danh sách những giá trị của mảng được giới hạn trong hai dấu ngoặc nhọn { }. C# có thể cung cấp những cú phápngắn gọn như sau: int[] myIntArray = new int[5] { 2, 4, 6, 8, 10 } int[] myIntArray = { 2, 4, 6, 8, 10 } Hai cách trên cho cùng kết quả là một mảng 5 phần tử có giá trị là 2, 4, 6, 8, 10. 9.2.2 Từ khóa params Đôi lúc có những phương thức ta không biết trước số lương tham số được truyền vào như: phương thức Main() không thể biết trước số lượng tham số người dùng sẽ truyền vào. Ta có thể sử tham số là mảng. Tuy nhiên khi gọi hàm ta phải tạo một biến mảng để làm tham số. C# cung cấp cú pháp để ta không cần truyền trực tiếp các phần tử của mảng bằng cách thêm từ khóa params Ví dụ 9-2 Sử dụng từ khóa params using System; namespace Programming_CSharp { public class Tester { static void Main( ) { Tester t = new Tester( ); /** * cách truyền tham số bằng các phần tử * không cần phải khởi tạo mảng * (cú pháp rất tự do) */ t.DisplayVals(5,6,7,8); /** * Cách truyền tham số bằng mảng * Mảng phải được tạo sẵn */ int [] explicitArray = new int[5] {1,2,3,4,5}; t.DisplayVals(explicitArray); } public void DisplayVals(params int[] intVals) { foreach (int i in intVals) { Console.WriteLine(DisplayVals {0},i); } } 60 Array, Indexer, and Collection Gvhd: Nguyễn Tấn Trần Minh Khang } } Kết quả: DisplayVals 5 DisplayVals 6 DisplayVals 7 DisplayVals 8 DisplayVals 1 DisplayVals 2 DisplayVals 3 DisplayVals 4 DisplayVals 5 9.2.3 Mảng nhiều chiều Ma trận là một ví dụ về mảng hai chiều. C# cho phép khai báo mảng n chiều, tuy nhiên thông dụng nhất vẫn là mảng một chiều (mảng) và mảng hai chiều. Ví dụ trong phần này là mảng hai chiều, tuy nhiên đối với n chiều cú pháp vẫn tương tự. 9.2.3.1 Mảng chữ nhật Tro ...
Tìm kiếm theo từ khóa liên quan:
Tìm hiểu ngôn ngữ C# C# và .Net Framework lập trình c# ngôn ngữ C# tài liệu c#Tài liệu liên quan:
-
161 trang 130 1 0
-
33 trang 70 0 0
-
Giáo trình Kỹ thuật lập trình nâng cao (Ngành: Tin học ứng dụng) - CĐ Kinh tế Kỹ thuật TP.HCM
119 trang 66 0 0 -
1 trang 44 0 0
-
thủ thuật windows XP hay nhất phần 2
14 trang 43 0 0 -
Các Chủ Đề Tiến Bộ Trong C# part
8 trang 40 0 0 -
Bài giảng Lập trình Windows Form với C#: Chương 1 - Lê Thị Ngọc Hạnh
56 trang 35 0 0 -
Tự học C# bằng hình ảnh cho người mới bắt đầu: Phần 1
88 trang 32 0 0 -
accounting reference desktop 2002 phần 6
64 trang 29 0 0 -
Các Chủ Đề Tiến Bộ Trong C# part 1
19 trang 29 0 0