C# 方法怎么定义和使用?

文章导读
Previous Quiz Next 方法是一段包含一组语句的代码块,这些语句共同完成一项任务。每个 C# 程序至少有一个名为 Main 的方法所在的 class。
📋 目录
  1. 在 C# 中定义方法
  2. C# 方法的元素
  3. 在 C# 中调用方法
  4. 从另一个类调用方法
  5. 递归方法调用
  6. C# 中的方法类型
  7. 向方法传递参数
A A

C# - 方法



Previous
Quiz
Next

方法是一段包含一组语句的代码块,这些语句共同完成一项任务。每个 C# 程序至少有一个名为 Main 的方法所在的 class。

要使用方法,您需要

  • 定义方法
  • 调用方法

在 C# 中定义方法

定义方法时,您基本上声明了其结构元素。在 C# 中定义方法的语法如下 −

语法

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

C# 方法的元素

以下是方法的不同元素 −

  • 访问修饰符 − 它决定了变量或方法从另一个 class 的可见性。

  • 返回类型 − 方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为 void

  • 方法名 − 方法名是一个唯一标识符,且区分大小写。它不能与 class 中声明的任何其他标识符相同。

  • 参数列表 − 括号括起来的参数用于向方法传递和接收数据。参数列表指的是方法的参数类型、顺序和数量。参数是可选的;也就是说,方法可以不包含参数。

  • 方法体 − 它包含完成所需活动所需的指令集。

定义方法的示例

以下代码片段显示了一个名为 FindMax 的 function,它接受两个整数值并返回两者中较大的一个。它具有 public 访问修饰符,因此可以使用 class 的实例从 class 外部访问。

class NumberManipulator {
   public int FindMax(int num1, int num2) {
      /* 本地变量声明 */
      int result;

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

      return result;
   }
   ...
   ...
}

在 C# 中调用方法

您可以通过方法名连同括号 () 来调用方法。如果方法属于某个对象,则使用对象名后跟点 (.) 来调用它。如果是 static 方法,则使用 class 名调用。

示例 1

在以下示例中,我们创建了一个包含 FindMax 方法的 class,该方法接受两个整数参数,比较它们,并返回两者中较大的一个 −

using System;
namespace CalculatorApplication {
   class NumberManipulator {
      public int FindMax(int num1, int num2) {
         /* 本地变量声明 */
         int result;
         
         if (num1 > num2)
            result = num1;
         else
            result = num2;
         return result;
      }
      
      static void Main(string[] args) {
         /* 本地变量定义 */
         int a = 100;
         int b = 200;
         int ret;
         NumberManipulator n = new NumberManipulator();

         //调用 FindMax 方法
         ret = n.FindMax(a, b);
         Console.WriteLine("Max value is : {0}", ret );
         Console.ReadLine();
      }
   }
}

输出

上述代码编译并执行后,将产生以下结果 −

Max value is : 200

从另一个类调用方法

你也可以通过类的实例从其他类调用 public method。例如,方法 FindMax 属于 NumberManipulator class,你可以从另一个类 Test 中调用它。

示例

在这个示例中,我们使用 C# 中的一个方法来找出两个数中的最大值,并演示从另一个类调用方法的流程 −

using System;
namespace CalculatorApplication {
   class NumberManipulator {
      public int FindMax(int num1, int num2) {
         /* 本地变量声明 */
         int result;
         
         if(num1 > num2)
            result = num1;
         else
            result = num2;
         
         return result;
      }
   }
   class Test {
      static void Main(string[] args) {
         /* 本地变量定义 */
         int a = 100;
         int b = 200;
         int ret;
         NumberManipulator n = new NumberManipulator();
         
         //调用 FindMax 方法
         ret = n.FindMax(a, b);
         Console.WriteLine("Max value is : {0}", ret );
         Console.ReadLine();
      }
   }
}

输出

当上述代码被编译并执行时,它会产生以下结果 −

Max value is : 200

递归方法调用

一个方法可以调用自身。这被称为 recursion。以下示例使用递归 function 计算给定数的阶乘 −

示例

using System;
namespace CalculatorApplication {
   class NumberManipulator {
      public int factorial(int num) {
         /* 本地变量声明 */
         int result;
         if (num == 1) {
            return 1;
         } else {
            result = factorial(num - 1) * num;
            return result;
         }
      }
      static void Main(string[] args) {
         NumberManipulator n = new NumberManipulator();
         //调用 factorial 方法 {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

C# 中的方法类型

根据功能,C# 方法可以分为以下类型:

  • 无参数的简单方法
  • 带参数的方法
  • 带返回值的的方法
  • 方法重载(相同方法,不同参数)
  • 带默认参数的方法

1. 无参数的简单方法

这种方法不接受任何参数,当函数调用时不需要外部输入时可以定义这种方法。

在下面的示例中,我们定义了一个无参数的方法并直接调用它:

using System;

class Program {
    static void WelcomeMsg() {
        Console.WriteLine("Hello, Welcome to C# Tutorial!");
    }

    static void Main() {
        WelcomeMsg();  // 调用该方法
    }
}

上述代码编译并执行后,会产生以下结果 −

Hello, Welcome to C# Tutorial!

2. 带参数的方法

当有外部(相对于函数)输入时,即您希望在函数调用时传递值,可以定义这种方法;它允许您传递可以在方法内部使用的值。

在下面的示例中,我们定义了一个接受参数以执行动态操作的方法:

using System;

class Program {
    static void Add(int a, int b) {
        Console.WriteLine("Sum: " + (a + b));
    }

    static void Main() {
        Add(5, 10);
        Add(20, 30);
    }
}

上述代码编译并执行后,会产生以下结果 −

Sum: 15
Sum: 50

3. 带返回值的的方法

当方法执行某些操作并且您希望在调用方法中获取结果时,这种方法非常有用。值通过 return 语句从方法返回。此外,您可以使用并存储返回的值。

在下面的示例中,我们定义了一个使用 return 语句返回值的函数:

using System;

class Program {
    static int Multiply(int x, int y) {
        return x * y;  // 返回乘积
    }

    static void Main() {
        int result = Multiply(4, 5);
        Console.WriteLine("Multiplication Result: " + result);
    }
}

上述代码编译并执行后,会产生以下结果 −

Multiplication Result: 20

4. 带默认参数的方法

您也可以通过提供默认值来定义方法。如果在调用方法时没有传递参数,则使用默认值。

在下面的示例中,我们定义了一个带有默认参数值的方法:

using System;

class Program {
    static void WelcomeMsg(string name = "Guest") {
        Console.WriteLine("Hello, " + name);
    }

    static void Main() {
        WelcomeMsg();  // 使用默认值
        WelcomeMsg("Krishna K.");  // 使用提供的值
    }
}

上述代码编译并执行后,会产生以下结果 −

Hello, Guest
Hello, Krishna K.

向方法传递参数

调用带参数的方法时,您需要向方法传递参数。有三种方式可以将参数传递给方法 −

序号 机制与描述
1 值参数

这种方法将参数的实际值复制到函数的形式参数中。在这种情况下,函数内部对参数的修改不会影响参数。

2 引用参数

这种方法将参数的内存位置引用复制到形式参数中。这意味着对参数的修改会影响参数。

3 输出参数

这种方法有助于返回多个值。