C#方法


C#中的方法是一組執行任務的語句。 每個 C# 程式至少有一個類包含一個名稱為Main()的方法。

要使用方法,需要:

  • 定義方法
  • 呼叫方法

C# 中定義方法

當要定義一個方法時,需要宣告它的結構元素。 C# 中定義方法的語法如下:

<Access Specifier> <Return Type> <Method Name>(Parameter List)
{
   Method Body
}

以下是方法中的各種元素說明:

  • 存取說明符(Access Specifier):這決定了一個類的變數或方法的可見性。
  • 返回型別(Return type):方法可能返回一個值。返回型別是方法返回的值的資料型別。 如果方法沒有返回任何值,則返回型別為void
  • 方法名稱(Method Name):方法名稱是唯一識別符號,區分大小寫。它不能與在類中宣告的任何其他識別符號相同。
  • 引數列表(Parameter list):括號內的引數用於從方法傳遞和接收資料。引數列表是指方法引數的型別,順序和編號。引數是可選的; 也就是說,方法可能不使用引數。
  • 方法體(Method body):這包含完成所需操作的一組程式碼語句和具體實現。

例子

以下程式碼片段顯示了一個函式FindMax,它使用兩個整數值,並返回兩者中較大的一個。 它具有公共存取說明符,因此可以使用類的範例從類外部存取它。

class NumberManipulator
{
   public int FindMax(int num1, int num2)
   {
      /* local variable declaration */
      int result;

      if (num1 > num2)
         result = num1;
      else
         result = num2;

      return result;
   }
   ...
}

C# 中的呼叫方法

可以使用方法的名稱呼叫方法。以下範例說明了這一點:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public int FindMax(int num1, int num2)
      {
         /* local variable declaration */
         int result;

         if (num1 > num2)
            result = num1;
         else
            result = num2;
         return result;
      }
      static void Main(string[] args)
      {
         /* local variable definition */
         int a = 101;
         int b = 199;
         int ret;
         NumberManipulator n = new NumberManipulator();

         //calling the FindMax method
         ret = n.FindMax(a, b);
         Console.WriteLine("Max value is : {0}", ret );
         Console.ReadLine();
      }
   }
}

當編譯和執行上述程式碼時,會產生以下結果:

Max value is : 199

還可以使用該類的範例從其他類呼叫public方法。 例如,FindMax方法屬於NumberManipulator類的成員,可以從另一個類Test中呼叫它。

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public int FindMax(int num1, int num2)
      {
         /* local variable declaration */
         int result;

         if(num1 > num2)
            result = num1;
         else
            result = num2;

         return result;
      }
   }

   class Test
   {
      static void Main(string[] args)
      {
         /* local variable definition */
         int a = 100;
         int b = 200;
         int ret;
         NumberManipulator n = new NumberManipulator();

         //calling the FindMax method
         ret = n.FindMax(a, b);
         Console.WriteLine("Max value is : {0}", ret );
         Console.ReadLine();
      }
   }
}

當編譯和執行上述程式碼時,會產生以下結果:

Max value is : 200

遞迴方法呼叫

遞迴方法是一種可以呼叫自身的方法。以下是使用遞回函式來計算給定數值的階乘的範例:

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public int factorial(int num)
      {
         /* local variable declaration */
         int result;
         if (num == 1)
         {
            return 1;
         }
         else
         {
            result = factorial(num - 1) * num;
            return result;
         }
      }

      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         //calling the factorial method
         Console.WriteLine("Factorial of 6 is : {0}", n.factorial(6));
         Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7));
         Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8));
         Console.ReadLine();
      }
   }
}

當編譯和執行上述程式碼時,會產生以下結果:

Factorial of 6 is: 720
Factorial of 7 is: 5040
Factorial of 8 is: 40320

將引數傳遞給方法

呼叫引數的方法時,需要將引數傳遞給方法。有三種方式可以將引數傳遞給方法,分別如下表格中所列:

機制 簡介
按值傳遞引數 將引數的實際值複製到函式的形式引數中。在函式內對引數所做的更改對引數沒有影響。
按參照傳遞引數 將對引數的記憶體位置的參照複製到形式引數中,在函式內對引數的更改會影響引數值。
輸出引數 此方法用於返回多個值。