Untitled TP HCM, 24/4/2022 TIỂU LUẬN KẾT THÚC HỌC PHẦN BỘ MÔN CƠ SỞ LẬP TRÌNH ĐỀ TÀI PHƯƠNG THỨC TRONG C# Sinh viên Hứa Tuệ Phương MSSV 31201020800 Mã lớp học phần 22D1INF50900504 Giảng viên Th S Đỗ T[.]
lOMoARcPSD|18034504 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THIẾT KẾ_ĐẠI HỌC UEH KHOA CÔNG NGHỆ THÔNG TIN KINH DOANH -o0o - TIỂU LUẬN KẾT THÚC HỌC PHẦN BỘ MƠN: CƠ SỞ LẬP TRÌNH ĐỀ TÀI: PHƯƠNG THỨC TRONG C# Sinh viên: Hứa Tuệ Phương MSSV: 31201020800 Mã lớp học phần: 22D1INF50900504 Giảng viên: Th.S Đỗ Thị Bích Lệ TP.HCM, 24/4/2022 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 MỤC LỤC PHƯƠNG THỨC (METHOD) 1.1 Chi tiết phần tử phương thức: 1.2 Gọi phương thức C# PHƯƠNG THỨC TRẢ VỀ MỘT GIÁ TRỊ .7 PHƯƠNG THỨC KIỂU VOID 3.1 Kiểu void khơng đối số Nó dùng để hiển thị thông báo 3.2 Kiểu void có đối số đưa vào khơng có đối số lấy 3.3 Kiểu void khơng có đối số đưa vào có đối số lất khỏi hàm 10 3.4 Kiểu void có đối số vào đối số 10 Phương thức tĩnh (static method) 11 4.1 Cú pháp: 11 4.2 Ví dụ: 12 Phương thức đệ quy 13 Truyền tham số cho phương thức: kiểu liệu giá trị tham chiếu 14 6.1 Tham số giá trị (value type) 14 6.2 Tham số tham chiếu 15 6.2.1 Từ khóa ref (reference type) 16 6.2.2 Từ khóa out 17 Một số vấn đề khác phương thức .19 7.1 Phương thức với Expression body 19 7.2 Named Arguments 19 TỔNG KẾT .20 Tài liệu tham khảo 21 PHƯƠNG THỨC (METHOD) Một phương thức nhóm lệnh thực tác vụ Khi định nghĩa phương thức, bản, khai báo phần tử cấu trúc Cú pháp để định nghĩa phương thức C# sau: Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 (Danh_sách_tham_số) { Phần thân phương thức } 1.1 Chi tiết phần tử phương thức: Access Specifier: Định nghĩa tính nhìn thấy biến phương thức với lớp khác Một số mức độ hay gặp: Public, private, protect, internal, … Hình Bảng tóm tắt (Trích: Access Modifiers (C# Programming Guide)) Kiểu_trả_về: Một phương thức trả giá trị Kiểu trả kiểu liệu giá trị mà phương thức trả Nếu phương thức khơng trả giá trị nào, kiểu trả void static int Sum(int a, int b) Một số kiểu liệu thường gặp: int, double, float, string, char, long,… Tên_phương_thức: Tên phương thức định danh phân biệt kiểu chữ Nó khơng thể giống định danh khác khai báo lớp Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Tên phương thức tuân thủ theo quy tắc đặt định danh C# người dùng tự đặt Tên phương thức phân biệt chữ hoa thường C# quy ước tên phương thức viết theo kiểu PascalCase (luôn bắt đầu chữ in hoa) [ CITATION Chi19 \l 1033 ] static double Binhphuong(double so) Ví dụ: Phương thức Max nhận hai số nguyên trả số nhỏ hai số Nó có thị truy cập public, truy cập từ bên vào lớp cách sử dụng thể lớp đó: class Tim GTNN so { public int Min(int so1, int so2) { return so1 < so2 ? so1 : so2; } } Danh_sách_tham_số: Danh sách tham số bao quanh dấu ngoặc đơn, tham số sử dụng để truyền nhận liệu từ phương thức Danh sách tham số liên quan tới kiểu, thứ tự, số tham số phương thức Các tham số tùy ý, tức phương thức khơng chứa tham số Ở giai đoạn khai báo phương thức, giá trị cụ thể biến mà sử dụng tên biến lệnh thân phương thức Đến giai đoạn gọi phương thức, người sử dụng cung cấp giá trị cụ thể (gọi tham số thực) Danh sách tham số khai báo theo cú pháp sau: < kiểu_dữ_liệu_1 > < tham_số_1 >, < kiểu_dữ_liệu_2 > < tham_s ố_2 >, Hình dung đơn giản, danh sách tham số chuỗi khai báo biến cục viết tách dấu phẩy Do đó, tham số tuân thủ quy tắc khai báo [ CITATION Chi19 \l 1033 ] < kiểu_dữ_liệu > < tên biến >; Danh sách tham số không bắt buộc phần khai báo phương thức Ta viết cặp dấu ngoặc trịn () sau tên phương thức danh sách tham số trống [ CITATION Chi19 \l 1033 ] Vd: int n, a, b; Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Phần thân phương thức: Phần thân phương thức chứa tập hợp thị cần thiết để hoàn thành hoạt động yêu cầu 1.2 Gọi phương thức C# Phương thức C# bắt buộc thành viên class struct (trừ phương thức lambda, phương thức vơ danh hàm cục bộ) Khai báo phương thức C# nằm trực tiếp namespace, namespace, class/struct Ở giai đoạn sử dụng (gọi phương thức), người dùng cung cấp giá trị đầu vào thực (nếu có) nhận giá trị trả (nếu có) qua “lời gọi phương thức” theo cấu trúc: [ CITATION Chi19 \l 1033 ] Tên phương thức ([biến_1, biến_2, ]); Trong biến 1, biến 2, phải có kiểu liệu theo trật tự khi định nghĩa phương thức Danh sách biến cung cấp cho lời gọi phương thức tham số thực (để phân biệt với danh sách tham số hình thức khai báo phương thức) Ví dụ: Khai báo hàm (phương thức) tĩnh có tên Canbac2 lớp Program, phương thức có tham số kiểu double, trả kiểu double bình phương tham số Sau gọi hàm tính bình phương using System; namespace EC003_Method { class Program //lớp { /// Tính bặc số thực double static float canbac2(double so) { float ketqua = math.sqrt(so); return ketqua; } static void Main(string[] args) { // Gọi phương thức Canbac2 float cb2 = canbac2(9); Console.WriteLine("Can bac cua 9: " + bp); } } } Chạy chương trình in ra: Can bac cua 9: Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Nhìn vào phần khai báo phương thức BinhPhuong, thấy không rõ Access Modify nào, điều có nghĩa hàm có Access Modify mặc định internal nghĩa viết đầy đủ là: static internal double BinhPhuong(double number) Do có từ khóa static trở thành phương thức tĩnh, nên gọi mà khơng cần tạo đối tượng kiểu lớp Program, để gọi hàm dạng cần xác tên hàm Một phương thức gọi nhiều lần, ví dụ: using System; namespace TuePhuong { class Phuongthuc2 { static void Main(string[] args) { Phuongthuc(); Console.WriteLine("Tich cua va 29 la: " + Tich(5, 29)); Console.WriteLine("Tich cua 10 va 29 la: " + Tich(10, 29)); Console.WriteLine("Tich cua 15 va 29 la: " + Tich(15, 29)); //dữ liệu hiển thị theo thứ tự static này, //Phuongthuc(), Tich() gọi } // Gọi phương thức tích đểểđưa liệu lên static int Tich(int a, int b) { return a * b; } // Gọi phương thức đểểđưa liệu lên static void Phuongthuc() { Console.WriteLine("Phuong thuc C#"); } } Kết quả: Phuong thuc C# Tich cua va 29 la: 145 Tich cua 10 va 29 la: 290 Tich cua 15 va 29 la: 435 Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 PHƯƠNG THỨC TRẢ VỀ MỘT GIÁ TRỊ Các phương thức trả giá trị cho trình gọi Nếu kiểu trả (kiểu liệt kê trước tên phương thức) void, phương thức trả giá trị cách sử dụng từ khóa return Một câu lệnh có từ khóa return theo sau biến, số biểu thức phù hợp với kiểu trả trả giá trị cho trình gọi phương thức Các phương thức có kiểu trả không void bắt buộc phải sử dụng từ khóa return để trả giá trị Từ khóa return dừng việc thực thi phương thức Nếu kiểu trả void, câu lệnh return khơng có giá trị hữu ích để dừng việc thực thi phương thức Nếu khơng có từ khóa return, phương thức ngừng thực thi đến cuối khối mã Cú pháp chung sau: [public|protected|private] ([danh sách tham số]) { [thân phương thức] [return ;] } Nếu phương thức (hàm) có trả giá trị kiểu liệu return phải trả giá trị có kiểu liệu tương ứng với kiểu liệu mà phương thức (hàm) định nghĩa Ví dụ hàm tính diện tính hình trịn // Định nghĩa hàm tính diện tích có kiểu liệu double, bán kính kiểu liệu int static double TinhDienTichHinhTron(int r) { double s = r * r * Math.PI; //Trả giá trị kiểu double return s; } // Nhập bán kính in hình diện tích hình tròn static void Main(string[] args) { int r = 6; Console.WriteLine("Ban kinh hinh tron: {0}", r); double kq = TinhDienTichHinhTron(r); Console.WriteLine("Dien tich hinh tron: {0:0.00}", kq); Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 } Kết quả: Ban kinh hinh tron: Dien tich hinh tron: 113.10 PHƯƠNG THỨC KIỂU VOID Trong hàm C biết hàm C tập hợp xử lý nhằm thực chức cụ thể chương trình Nói cách khác nhập thông tin (đối số) vào hàm, thông tin xử lý hàm, hàm xuất lại thông tin (giá trị trả về) cho sau hàm kết thúc Việc nhập xuất hàm chọn từ việc [có thơng tin] [khơng có thơng tin] Nói cách khác lựa chọn thơng tin nhập xuất từ trường hợp sau: Mơ hình đầu vào đầu hàm C Và trường hợp nhập xuất trên, [kiểu void] sử dụng kiểu liệu để đầu vào đầu không tồn hàm [ CITATION Kiy21 \l 1033 ] Có người gọi phương thức kiểu Void phương thức không trả giá trị Tuy nhiên phương thức có đối số tham chiếu có trả nhiều giá trị đồng thời Vì vậy, ta để nguyên kiểu “Void” mà không cần dịch tiếng Việt [ CITATION Phạ07 \l 1033 ] Có thể chia kiểu void thành loại: Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 3.1 Kiểu void khơng đối số Nó dùng để hiển thị thông báo double getPI(void) { return 3.141592; } 3.2 Kiểu void có đối số đưa vào khơng có đối số lấy Nó thuồng dùng để hiển thị thơng báo, tính tốn biểu thức hiển thị kết hình void printNum(int num) { printf("%d\n", num); } 3.3 Kiểu void khơng có đối số đưa vào có đối số lất khỏi hàm Nó thường dùng để nhập liệu từ bàn phím đưa khỏi hàm Các đối số lấy phải đối số kiểu tham chiếu kiểu có từ khóa ref hay từ khóa out void Hello(void) { printf("Hello\n"); } 3.4 Kiểu void có đối số vào đối số using System; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { //khởi tạo số lượng số mảng Console.Write("So luong phan tu mang :"); int n = int.Parse(Console.ReadLine()); // console.read đọc liệu chuổi cần liệu số nên ph ải dùng int.parse Random rnd = new Random(); int[] arr = new int[n]; Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 for (int i = 0; i < n; i++) { arr[i] = rnd.Next(6); // random từ tới } int maxValue = arr.Max(); Console.WriteLine("Max : " + maxValue); //gán giá trị lớn nhất, so sánh từ từ với số lại để đếm for (int i = 0; i < arr.Length; i++) { Console.Write(arr[i] + " "); } Console.WriteLine(); for (int i = 0; i < maxValue; i++) { for (int j = 0; j < arr.Length; j++) { if (arr[j] > 0) { Console.Write("*" + " "); arr[j] ; } else { Console.Write(" " + " "); } } Console.WriteLine(); } } } } Kết quả: Phương thức tĩnh (static method) Phương thức tĩnh liên kết với thân class không liên kết với object class Do có phiên phương thức tạo Về cú pháp khai báo, phương thức tĩnh khác biệt với phương thức thành viên từ khóa static đặt trước tên kiểu trả Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 4.1 Cú pháp: static { // nội dung phương thức } Trong đó: phạm vi trình bày mục Phương thức static từ khoá để khai báo thành viên tĩnh kiểu trả phương thức (đã trình bày mục Phương thức) tên người dùng đặt tuân thủ quy tắc đặt tên (các quy tắc đặt tên trình bày BIẾN TRONG C#) Hàm tĩnh sử dụng với mục đích chính: Hàm tĩnh hàm dùng chung lớp Được gọi thông qua tên lớp không cần khởi tạo đối tượng nào, từ tránh việc lãng phí nhớ Hỗ trợ việc viết hàm tiện ích để sử dụng lại Về sử dụng bạn thao tác hồn tồn giống phương thức bình thường cần lưu ý phải gọi phương thức thông qua tên lớp 4.2 Ví dụ: Bạn viết hàm Tính tốn tính luỹ thừa số ngun để hỗ trợ tính tốn using System; namespace TuePhuong { class Phuongthuctinh { static void Main(string[] args) { // Sử dụng trực tiếp tên class để truy cập vào phuongthuctinh mà không cần khởi tạo đối tượng student Sinhvien.PrintName("Hua Tue Phuong", Sinhvien.PrintName("Welcome to", "bai thuyet trinh cua nhom hom nay"); Console.ReadKey(); } } public class Sinhvien { Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 // Khai báo phương thức tĩnh public static void PrintName(string Ho, string Ten) { string hoten = string.Format("{0} {1}", Ho, Ten); Console.Writeline("Ho ten sinh vien:"+ hoten); } } Kết chạy chương trình trên: Ho ten sinh vien: Hua Phuong Ho ten sinh vien: Welcome to bai thuyet trinh cua nhom hom Phương thức đệ quy Đệ quy phương thức khai báo, thân có gọi lại Ví dụ: Nhập n số xuất số tương ứng số theo dạng dọc xuống (Trích Kiểm tra kỳ lần 1) class TinhGiaiThua { public int GiaiThua(int num) { int ketqua; if (num == 1) { return 1; } else { ketqua = GiaiThua(num - 1) * num; return ketqua; } } static void Main(string[] args) { Console.OutputEncoding = System.Text.Encoding.UTF8; TinhGiaiThua n = new TinhGiaiThua(); Console.WriteLine("Giai thừa là: {0}", n.GiaiThua(7)); Console.ReadLine(); } } Kết quả: Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Ở ví dụ trên, thân phương thức GiaiThua ta gọi lại phương thức GiaiThua lần tính ketqua Vì gọi phương thức đệ quy Đệ quy giống vòng lặp, ta cần phải có điều kiện dừng để tránh lặp đệ quy vơ tận Hầu hết phương thức đệ quy thay vịng lặp, vòng lặp đơn giản ta nên ưu tiên vòng lặp thay đệ quy Trong nhiều ví dụ kiểm tra hiệu đệ quy chậm sử dụng vòng lặp nhiều [ CITATION Chi19 \l 1033 ] Truyền tham số cho phương thức: kiểu liệu giá trị tham chiếu Kiểu liệu C# chia làm loại: kiểu liệu giá trị (value type) kiểu liệu tham chiếu (reference type) Theo cách phân loại này, object string thuộc nhóm reference, tất kiểu liệu lại (int, float, double, ) thuộc nhóm value Đối tượng kiểu liệu giá trị nằm stack, đối tượng kiểu liệu tham chiếu nằm heap Hai loại kiểu liệu biểu kết khác sử dụng tham số phương thức 6.1 Tham số giá trị (value type) Khi truyền tham số giá trị cho phương thức, tham số tạo stack phương thức gọi Tất thao tác mà phương thức thực tham số tác động Do đó, sau kết thúc phương thức, giá trị tham số giữ nguyên trước truyền vào phương thức Tức thay đổi (nếu có) biến phương thức khơng giữ lại Ví dụ, truyền giá trị i = 10 cho phương thức, i tạo truyền vào phương thức Những thay đổi phương thức thực chất tác động lên i, khơng phải i Do vậy, kết thúc phương thức, bị hủy bỏ, cịn i khơng thay đổi Điều thể rõ qua phần ví dụ phương thức Swap hoán đổi giá trị biến Truyền tham số giá trị: private static void Swap(int a, int b) { var temp = a; a = b; b = temp; Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 } private static void Main(string[] args) { int a = 10, b = 5; Console.WriteLine($"Truoc chuyen: a = {a}, b = {b}"); Swap(a, b); Console.WriteLine($"Sau chuyen : a = {a}, b = {b}"); Console.ReadKey(); } Nhận xét: Nhìn vào kết ta thấy bên sau hốn đổi, giá trị a b lại chưa hốn đổi Điều có nghĩa phương thức Swap khơng có tác dụng hốn đổi Các đối số phương thức không sử dụng “tham chiếu” mà giá trị thông thường 6.2 Tham số tham chiếu ham chiếu giống tập cha thằng tham trị, tham biến Khi mà tham chiếu biến tham biến cịn tham trị tham chiếu giá trị Chúng ta có khái niệm tham chiếu giá trị tham số hàm cho phép chương trình truy xuất gián tiếp tới nhiều số liệu cụ thể cách sử dụng tham biến truyền vào hàm Như nói trên, tham chiếu giúp truy xuất gián tiếp tới nhiều số liệu cụ thể…Việc truy xuất cách gián tiếp thực chất chương trình tạo copy tham biến truyền vào sử dụng ngăn cách hoàn toàn với tham biến ban đầu Vậy muốn truy xuất cách trực tiếp ? Vì vậy, từ khóa ref out đời Cú pháp sử dụng ref out tương tự nhau, khai báo tham số cho hàm sử dụng với cấu trúc: [ref out] ; Khi khai báo ref out cho tham số, sử dụng tham biến, phải sử dụng thêm từ khóa tương ứng với từ khóa sử dụng tham số [ref out] ; 6.2.1 Từ khóa ref (reference type) Khi truyền biến thuộc kiểu tham chiếu, thân địa vùng heap nơi lưu giá trị truyền vào cho phương thức Tất thao tác tham số tác động thẳng Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 lên giá trị nằm heap Vì vậy, sau kết thúc phương thức, thay đổi lưu lại Từ khóa ref cho phép ta truyền biến kiểu giá trị lưu giữ thay đổi sử dụng biến kiểu tham chiếu Khi khai báo phương thức, tham số truyền vào thuộc kiểu giá trị, cần phải giữ lại thay đổi thực thân phương thức, C# cho phép sử dụng từ khóa ref trước khai báo tham số Khai báo ref tham số phương thức, bắt buộc gọi phải sử dụng biến làm tham số không dùng giá trị class Program { static void Main(string[] args) { int a = 96; Console.WriteLine("Gia tri cua a la: " +a); DemoRef(ref a); // vị trí dùng ref Console.WriteLine("Gia tri cua a bay gio la: " + a); Console.ReadLine(); } static void DemoRef(int a) { a += 5; Console.WriteLine("Gia tri cua a sau thay doi la: " +a); } } Khi sử dụng từ khóa ref phải khai báo trước tên tham số truyền vào sử dụng hàm trước kiểu liệu khai báo hàm Trong hàm Main mình in giá trị a sau gọi hàm demoref Kết 96 + = 101 Tăng a lên thành 101 giá trị biến a 96 tham số truyền vào hàm DemoRef tạo RAM dùng để xử lý liệu Sau kết thúc lệnh gọi hàm parameter giữ nguyên giá trị ban đầu truyền vào class Program { static void Main(string[] args) { int a = 96; Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Console.WriteLine("Gia tri cua a la: " +a); DemoRef(ref a); //vị trí dùng ref Console.WriteLine("Gia tri cua a bay gio la: " + a); Console.ReadLine(); } static void DemoRef(ref int a) //vị trí dùng ref { a += 5; Console.WriteLine("Gia tri cua a sau thay doi la: " +a); } } Nhưng mà mà dùng từ khóa ref kết thay đổi Ví dụ “gia tri cua a sau thay doi” 96, ví dụ sau dùng ref, giá trị tham số truyền vào hàm DemoRef bị thay đổi sau gọi hàm Chúng ta sử dụng ref cần truy vấn cách trực tiếp với tham chiếu biến tham biến phải khởi tạo sẵn giá trị [ CITATION iwa \l 1033 ] 6.2.2 Từ khóa out Mỗi phương thức nhận danh sách biến hình thức cung cấp thông tin đầu vào cho phương thức Các biến nhận giá trị thực gọi phương thức Đây cách sử dụng mặc định tham số Tham số gọi làm tham số vào (OUT) Kết thực phương thức trả thông qua lời gọi phương thức Thơng thường phương thức trả giá trị thông qua lời gọi phương thức Out sử dụng tương tự ref khác chỗ là: - Biến truyền vào parameter có từ khóa out khơng cần khởi tạo giá trị trước truyền - Parameter phải khởi tạo giá trị bên thân hàm Ví dụ: using System.IO; using System; namespace LTKK Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 { class Program { static void Change_A(out int A) { A = 10; } static void Main() { int a = 75; Console.WriteLine(a); Change_A(out a); Console.WriteLine(a); Console.ReadKey(); // dừng hình } } } Kết quả: 75 10 Trong chương trình, khai báo giá trị biến a có kiểu số nguyên với giá trị 75, sau khai báo in giá trị a kết lúc đầu xuất 75 điều dễ hiểu Nhưng lúc này, sau sử dụng hàm Change_A, giá trị biến a ban đầu bất ngờ lại bị đổi thành 10 ta gán hàm Điều chứng minh chương trình truy vấn trực tiếp với tham chiếu A dẫn tới việc biến a ban đầu bị thay đổi theo Chúng ta sử dụng out cần truy vấn cách trực tiếp tới tham chiếu biến tham biến không cần khởi tạo sẵn giá trị [ CITATION iwa \l 1033 ] Một số vấn đề khác phương thức 7.1 Phương thức với Expression body Nếu thân phương thức có lệnh nhất, C# cho phép viết phương thức dạng đơn giản hóa, gọi expression body Cách viết expression body loại bỏ cặp dấu {} lệnh return (nếu có) thân phương thức Expression body sử dụng toán tử => để ghép tên thân phương thức Ví dụ: Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 public bool IsSquare(Rectanggle rect) => rect.Height == rect.Width; Đây cách viết dạng expression body Cách viết “truyền thống” phương thức là: public bool IsSquare(Rectangle rect) { return rect.Height == rect.Width; } Như vậy, thân phương thức (thông thường) chứa lệnh return, ta cần viết biểu thức tính giá trị ghép với tên phương thức qua dấu => C# tự hiểu cần trả lại giá trị biểu thức cho lời gọi phương thức Nếu thân phương thức lệnh không trả giá trị (kiểu trả void), ta cần viết lệnh ghép với tên phương thức dấu => [ CITATION Chi19 \l 1033 ] 7.2 Named Arguments Ở ta biết cách gọi phương thức cách cung cấp danh sách giá trị theo thứ tự kiểu: // khai báo public void MoveAndResize(int x, int y, int width, int height) { } // gọi phương thức r.RemoveAndResize(30, 40, 20 40); C# cho phép gọi phương thức theo cách khác: r.RemoveAndResize(x: 30, y: 40, width: 20, height: 40) Cách gọi phương thức có tên named arguments Trong cách gọi này, tham số truyền cách viết tên tham số (đặt khai báo phương thức), dấu hai chấm giá trị Cách gọi không cần quan tâm thứ tự viết tham số Cách gọi hữu ích phương thức có nhiều tham số sử dụng kết hợp tham số tùy chọn [ CITATION Chi19 \l 1033 ] TỔNG KẾT Chung quy lại, phương thức hàm “sở hữu” đối tượng (như class) Nghĩa ta gọi phương thức cách tham chiếu đến đối tượng Downloaded by vu ga (vuchinhhp2@gmail.com) lOMoARcPSD|18034504 Phương thức giúp cho chương trình có tính module hóa, tránh trường hợp code lặp lặp lại tái sử dụng code, nâng cao tính sáng sủa, giúp phân chia chương trình phức tạp thành module nhỏ đơn giản hơn, đồng thời nâng cao tính bảo mật Phương thức giúp tăng suất, đơn giản hóa độ phức tạp bảo trì code mở rộng phần mềm cách cho phép lập trình viên tập trung vào đối tượng phần mềm bậc cao Tài liệu tham khảo [1] M Chi, "Phương thức thành viên (member method) class C#," 2019 [Online] Available: https://tuhocict.com/method-trong-c-sharp/ [2] Kiyoshi, "Lập trình bản," 2021 [Online] Available: https://laptrinhcanban.com/c/lap-trinh-c-co-ban/ham-trong-c/void-trong-c/ [3] P C Ngơ, Lập trình C# từ đến nâng cao, Nhà xuất Giáo Dục, 2007 [4] iwannabetheguy, "Lập trình khơng khó," [Online] Available: https://nguyenvanhieu.vn/tham-tri-va-tham-chieu-tu-khoa-ref-out-trong-c/ Downloaded by vu ga (vuchinhhp2@gmail.com) ... Phần thân phương th? ?c chứa tập hợp thị c? ??n thiết để hoàn thành hoạt động yêu c? ??u 1.2 Gọi phương th? ?c C# Phương th? ?c C# bắt bu? ?c thành viên class struct (trừ phương th? ?c lambda, phương th? ?c vô danh... sách biến cung c? ??p cho lời gọi phương th? ?c tham số th? ?c (để phân biệt với danh sách tham số hình th? ?c khai báo phương th? ?c) Ví dụ: Khai báo hàm (phương th? ?c) tĩnh c? ? tên Canbac2 lớp Program, phương. .. trả phương th? ?c (đã trình bày m? ?c Phương th? ?c) tên người dùng đặt tuân thủ quy t? ?c đặt tên (c? ?c quy t? ?c đặt tên trình bày BIẾN TRONG C# ) Hàm tĩnh sử dụng với m? ?c đích chính: