方法

方法是一组在一起执行任务的语句。每个 C# 程序都至少有一个含有方法的类,名为 Main。
若要使用方法,您需要:

  • 定义一个方法
  • 调用方法

在 C# 中定义方法

当你定义一个方法时,你基本上要声明其结构的组成元素。在 C# 中定义方法的语法如下所示:

  1. <Access Specifier> <Return Type> <Method Name>(Parameter List)
  2. {
  3. Method Body
  4. }

以下是方法中的各种元素:

  • 访问说明符:它用于从一个类中确定一个变量或方法的可见性。
  • 返回类型:方法可能会返回一个值。返回类型是方法返回值的数据类型。如果该方法不返回任何值,那么返回类型是 void。
  • 方法名称:方法名称是唯一的标识符,并区分大小写。它不能与在类中声明的任何其他标识符相同。
  • 参数列表:括号括起来,使用参数从方法中传递和接收数据。参数列表是指类型、顺序和方法的参数数目。参数是可选的;方法可能包含任何参数。
  • 方法主体:它包含的一组指令完成所需要的活动所需。

示例
下面的代码段显示了一个函数 FindMax,从两个整数值中,返回其中较大的一个。它具有公共访问说明符,所以它可以通过使用类的外部例子来访问。

  1. class NumberManipulator
  2. {
  3. public int FindMax(int num1, int num2)
  4. {
  5. /* local variable declaration */
  6. int result;
  7. if (num1 > num2)
  8. result = num1;
  9. else
  10. result = num2;
  11. return result;
  12. }
  13. ...
  14. }

在 C# 中调用方法

你可以使用方法的名称来调用方法。下面的示例说明了这一点:

  1. using System;
  2. namespace CalculatorApplication
  3. {
  4. class NumberManipulator
  5. {
  6. public int FindMax(int num1, int num2)
  7. {
  8. /* local variable declaration */
  9. int result;
  10. if (num1 > num2)
  11. result = num1;
  12. else
  13. result = num2;
  14. return result;
  15. }
  16. static void Main(string[] args)
  17. {
  18. /* local variable definition */
  19. int a = 100;
  20. int b = 200;
  21. int ret;
  22. NumberManipulator n = new NumberManipulator();
  23. //calling the FindMax method
  24. ret = n.FindMax(a, b);
  25. Console.WriteLine("Max value is : {0}", ret );
  26. Console.ReadLine();
  27. }
  28. }
  29. }

编译执行上述代码,得到如下结果:

  1. Max value is : 200

你也可以通过使用类的实例来从其他类中调用公开方法。
例如,FindMax 它属于 NumberManipulator 类中的方法,你可以从另一个类测试中调用它。

  1. using System;
  2. namespace CalculatorApplication
  3. {
  4. class NumberManipulator
  5. {
  6. public int FindMax(int num1, int num2)
  7. {
  8. /* local variable declaration */
  9. int result;
  10. if(num1 > num2)
  11. result = num1;
  12. else
  13. result = num2;
  14. return result;
  15. }
  16. }
  17. class Test
  18. {
  19. static void Main(string[] args)
  20. {
  21. /* local variable definition */
  22. int a = 100;
  23. int b = 200;
  24. int ret;
  25. NumberManipulator n = new NumberManipulator();
  26. //calling the FindMax method
  27. ret = n.FindMax(a, b);
  28. Console.WriteLine("Max value is : {0}", ret );
  29. Console.ReadLine();
  30. }
  31. }
  32. }

编译执行上述代码,得到如下结果:

  1. Max value is : 200

递归方法调用

有一种方法可以调用本身。这就是所谓的递归。下面是使用递归函数计算一个给定数字阶乘的示例:

  1. using System;
  2. namespace CalculatorApplication
  3. {
  4. class NumberManipulator
  5. {
  6. public int factorial(int num)
  7. {
  8. /* local variable declaration */
  9. int result;
  10. if (num == 1)
  11. {
  12. return 1;
  13. }
  14. else
  15. {
  16. result = factorial(num - 1) * num;
  17. return result;
  18. }
  19. }
  20. static void Main(string[] args)
  21. {
  22. NumberManipulator n = new NumberManipulator();
  23. //calling the factorial method
  24. Console.WriteLine("Factorial of 6 is : {0}", n.factorial(6));
  25. Console.WriteLine("Factorial of 7 is : {0}", n.factorial(7));
  26. Console.WriteLine("Factorial of 8 is : {0}", n.factorial(8));
  27. Console.ReadLine();
  28. }
  29. }
  30. }

编译执行上述代码,得到如下结果:

  1. Factorial of 6 is: 720
  2. Factorial of 7 is: 5040
  3. Factorial of 8 is: 40320

将参数传递给方法

当调用带参数的方法时,您需要将参数传递给该方法。有三种方法,可以将参数传递给方法:

方法 描述
值参数 此方法将参数的实际值复制到该函数的形参。在这种情况下,对该参数在函数内部所做的更改没有对参数产生影响。
引用参数 此方法将对实参的内存位置的引用复制到形参。这意味着对参数所做的更改会影响参数本身。
输出参数 这种方法有助于返回多个值。