Method(Phương thức) trong C#

Method (Phương thức) trong C# là gì,

  1. Phương thức trong c# là gì
  2. Cú pháp viết phương thức trong c#
  3. Ba dạng phương thức hay sử dụng trong c#
  4. Tham số truyền vào trong c#
    • Phương thức cùng tên nhưng khác tham số truyền vào
    • Tham số động trong C#
    • Từ khóa ref và out trong C#

 

1. Phương thức trong C# là tập hợp dòng lệnh, mỗi lệnh nhằm thực hiện một nghiệp vụ nào đó, mỗi phương thức sẽ có tên đặt không được trùng nhau trong phạm vi của phần mềm, để nói lên phương thức đó làm một nghiệp nào trong phần mềm.

Ví dụ như khi làm phần mềm quản lý kho bạn tạo ra 1 phương tính tồn kho cho 1 hàng hòa nào đó thì các dòng lệnh trong phương thức chỉ làm việc với nghiệp vụ tính kho và trả về 1 giá trị là số lượng tồn khi, và phương thước này sẽ được sử dụng lặp đi lặp lại tại các chức năng (form) của phần mềm.

public static double GetTonKho(string maHang)
{
....
}
Phương thức GetTonKho được sử dụng tại nhiều form trong phần mềm.

2. Cú pháp viết phương thức trong C#

pham_vi_truy_cập kiểu_dữ_liệu_trả_về tên_phương_thức(danh_sách_tham_số) {
   // Phần thân hàm
}

[public|protected|private] <kiểu trả về> <tên phương thức>([danh sách tham số])
{
  [code c#];
  [return [giá trị];   
}

3. Trong thực thế khi viết phần mềm có 3 kiểu phương thức viết hay sử dụng

  • Phương thức có giá trị trả về có tham số truyền vào (rất nhiều)

Public static int tinhtong(int a,int b)
{
  int c=a+b;
  return c;
}

  • Phương thức không có giá trị trả về và có tham số truyền vào (nhiều)

Public static void GhiFileLog(string strErrr)
{
    ... Code luu xuong file Log
    ..có 2 cách ghi file log
              - phần mềm nhỏ: text
             - phần mềm lớn: SQL

  - lưu nhật ký lỗi
   Ngày giờ lỗi , Mô tả lỗi ,       Tên class,        tên phương thức
   2024/6/9         Null tungay     NhanVien      TinhLuong

   Select * from tbLog Order by NgayPhatSinhLoi Desc
}
 

  • Phương thức không có giá trị trả về không có tham số truyền vào (ít)

Public static void demSoLanChayPhanMem()
{
    ... Code tang so lan chay phan mem
}

Các phương thức trên là minh họa 1 nghiệp vụ code nào đó, trong thực tế còn nhiều nghiệp vụ khác.

Cách sử dụng tham số truyền vào trong phương thức
Cách gọi phương thức: Truyền tham số từ khóa ref


 Ví dụ phương thức cơ bản nhất trong C#

 static void Main(string[] args)
        {
            tong(1, 3);
            Console.ReadLine();
        }
        static void tong(int a, int b)
        {
            Console.WriteLine(a+b);
        }

      Gợi ý: Trên thực tế thì hàm WriteLine chỉ dùng trong Console, nếu viết cách trên thì chỉ trong lúc nghiên cứu học lập trình c#
      Về khi làm phần mềm thực tế c# thì không ai viết kiểu như trên, bởi vì 1 phương thức viết ra thì người lập trình viên c# phải nghĩ được là phương thức viết ra phải dùng chung cho nhiều trường hợp, đó là cái khó của người lập trình, bạn cần phải có kinh nghiệm trong nhiều năm để đạt được level này.

Ví dụ c# : bạn hãy cho 1 nhận xét, có khác gì với cách viết trên.

static void Main(string[] args)
        {
            int kq=tong(1, 3);
           Console.WriteLine(kq);
            Console.ReadLine();
        }
        static int tong(int a, int b)
        {
            return a+b;
        }

4. Tham số truyền vào trong c#

  • Phương thức cùng tên nhưng khác tham số truyền vào

     Cải tiến trong C#, vb không có cái phương thức có tham số tùy chọn.

static void tong(int a, int b)
        {
            Console.WriteLine(a + b);
        }

static void tong(string a, string b)
        {
            Console.WriteLine( int.Parse(a) + int.Parse(b));
        }

static void tong(int a, int b,int c)
        {
            Console.WriteLine(a + b+c);
        }

Tại sao trong lập trình C# sinh ra kiểu 1 phương thức có thể tùy chọn nhiều tham số truyền vào ?

  • Tham số động trong C#

 static void Main(string[] args)
 {
     int kq = tong(2, 3, 4, 5, 4);
     Console.WriteLine(kq);
     Console.ReadLine();
 }

 static int tong(params int[] so)
 {
     int tong = 0;
     foreach(var it in so)
     {
         tong += it;
     }
     return tong;

 }

Bây giờ bạn hãy sửa lại đoạn code C# trên, xóa đi params , chạy xem được không, vì sao ?

-- Lỗi , bay giờ sửa lại không có params mà chạy được trong C#

static void Main(string[] args)
{
    int[] so = { 10, 20, 30, 40 };
    int kq =tong(so);
    Console.WriteLine(kq);
}
       
 static int tong( int[] so)
{
    int tong = 0;
    foreach (var it in so)
    {
        tong += it;
    }
    return tong;

}

--> Quay lại về ban đầu.

 

 

  • Từ khóa ref và out trong C#

 static void Main(string[] args)
 {
     int a = 2;
     int b = 3;
     int kq = tong(ref a,ref b);
     Console.WriteLine(kq);
     Console.ReadLine();

 }

 static int tong(ref int a,ref int b)
 {
     return a + b;

 }

 

// Có nghiệp: xếp giao
     // viết 1 phương thức KO ĐƯỢC TRẢ VỀ GIÁ TRỊ
     // như vẫn trả về được kết quả 2 tổng số với nhau

  static void Main(string[] args)
 {
   
     int a = 4;
     int b = 7;
     int tong = 0;
     tinhtong(a, b, ref tong);
     Console.WriteLine(tong);
     Console.ReadLine();
 }
 static void tinhtong(int a,int b,ref int c)
 {
     c = a + b;        
 }

 

  static void Main(string[] args)
 {
     // Có nghiệp: xếp giao
     // viết 1 phương thức KO ĐƯỢC TRẢ VỀ GIÁ TRỊ
     // như vẫn trả về được kết quả 2 tổng số với nhau
     int a = 4;
     int b = 7;
     int tong = 0;
     int nhan = 0;
     tinhtong(a, b, ref tong,ref nhan);
     Console.WriteLine("Tong:"+tong);
     Console.WriteLine("Nhan:"+tong);
     Console.ReadLine();
 }
 static void tinhtong(int a,int b,ref int c,ref int d)
 {
     c = a + b;
     d = a * b;
 }