Lập trình với C#: Chương 2 (Phần VI)

Phương thức

Trong phần này chúng ta sẽ được học làm thế nào để định nghĩa các phương thức trong C#.

Khai báo phương thức (Declaring Methods)

Cú pháp khai báo trong C# gần như giống với cách khai báo trong C++ và Java. Chỉ khác là mỗi phương thức được khai báo tách biệt public hoặc private. Không thể dùng public để nhóm các phương thức định nghĩa Ngoài ra tất cả các phương thức C# được định nghĩa trong lớp định nghĩa

Trong C#, các phuơng thức kèm theo các từ khoá dùng bỗ nghĩa cho phương thức., kiểu giá trị trả về, các tham số nhập vào và phần thân nằm trong dấu ngoặc kép:

[modifiers] return_type MethodName([parameters])
{
     // Thân phương thức
}

Mỗi tham số có tên của kiểu của tham số và tên mà nó được kham khảo trong thân phương thức, và cả giá trị trả về nếu có. Thí dụ :

public bool IsSquare(Rectangle rect) 

     return (rect.Height == rect.Width); 
}

public bool IsPositive(int value)
{
     if (value < 0)
           return false;
     return true;
}

Gọi Phương thức (Invoking Methods)

Ví dụ dưới đây sẽ thực hiện việc gọi phương thức MathTest, đồng thời hướng dẫn cú pháp để gọi phương thức Phương thức MathTest sẽ được hàm Main() gọi khi nó cần.

using System;

namespace Wrox.ProCSharp.Basics
{
     class MainEntryPoint 
     {
           static void Main() 
            {
                // Try calling some static functions
                   Console.WriteLine(“Pi is ” + MathTest.GetPi());
                    int x = MathTest.GetSquareOf(5);
                    Console.WriteLine(“Square of 5 is ” + x);

                // Instantiate at MathTest object
                    MathTest math = new MathTest(); // this is C#’s way of
               // instantiating a reference type

              // Call non-static methods
                    math.value = 30;
                    Console.WriteLine(
                    “Value field of math variable contains ” + math.value);
                    Console.WriteLine(“Square of 30 is ” + math.GetSquare());
                }
        }

// Define a class named MathTest on which we will call a method
class MathTest
{
     public int value;

     public int GetSquare()
       {
           return value*value;
       } 

      public static int GetSquareOf(int x)
      {
           return x*x;
      } 

      public static double GetPi()
      {
          return 3.14159;
      }
   }
}

Running the MathTest sample produces these results:

csc MathTest.cs
Microsoft (R) Visual C# .NET Compiler version 7.00.9466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright (C) Microsoft Corporation 2001. All rights reserved.

MathTest
Pi is 3.14159
Square of 5 is 25
Value field of math variable contains 30
Square of 30 is 900

Truyền tham số cho Phương thức (Passing Parameters to Methods)

 
Ví dụ sau đây hướng dẫn cách truyền tham số cho một phương thức:

using System;

namespace Wrox.ProCSharp.Basics
{
       class ParameterTest
        { 
             static void SomeFunction(int[] ints, int i) 
              {
                    ints[0] = 100;
                    i = 100;
              }

             public static int Main()
             {
                   int i = 0;
                   int[] ints = { 0, 1, 2, 4, 8 }; 
                    // Hiển thị giá trị ban đầu
                    Console.WriteLine(“i = ” + i); 
                    Console.WriteLine(“ints[0] = ” + ints[0]);
                    Console.WriteLine(“Calling SomeFunction…”);

                    // Sau khi phương thức này trả về, ints sẽ bị thay đổi 
                   // nhưng i thì không
                    SomeFunction(ints, i);
                    Console.WriteLine(“i = ” + i); 
                    Console.WriteLine(“ints[0] = ” + ints[0]);
                    return 0;
              }
       }
}

Chạy chương trình được kết quả sau:

csc ParameterTest.cs
Microsoft (R) Visual C# .NET Compiler version 7.00.9466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright (C) Microsoft Corporation 2001. All rights reserved.

ParameterTest
i = 0
ints[0] = 0
Calling SomeFunction…
i = 0
ints[0] = 100