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
Download MathTest
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
Download ParameterTest
. produces these results:
csc MathTest.cs
Microsoft (R) Visual C# .NET Compiler version 7.00.9 466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright. được kết quả sau:
csc ParameterTest.cs
Microsoft (R) Visual C# .NET Compiler version 7.00.9 466
for Microsoft (R) .NET Framework version 1.0.3705
Copyright